Как использовать разные типы данных в одной коллекции в Java

1

Я хочу сделать этот тип данных с помощью коллекции.

[username] = test
[password] = test
[model] = City
[action] = add
[City] = Array
    (
        [name] = Added from me
        [state_id] = 1243
    )
  • 0
    все ваши строки значений?
  • 2
    Это технически выполнимо в Java, но это не значит, что вы должны это делать. Гораздо лучше написать свои собственные классы для обработки соответствующих типов для каждого из полей. Подобное смешивание типов приводит к вонючему, не поддерживаемому коду.
Показать ещё 1 комментарий
Теги:

4 ответа

9

Map хороша здесь

Map<Object, Object> map = new HashMap<Object, Object>();
map.put("username", "[email protected]");
map.put("city", arrayOfCity);

Убедитесь, что вы используете реализацию HashMap тогда вам нужно предоставить разумную версию hashcode() и equals() для вашего настраиваемого типа, который вы добавляете в Map

Если у вас есть фиксированный набор свойств, вы должны пойти с классом и создать его, если не использовать карту

  • 0
    он принимает только NameValuePair, тогда мы можем сделать это UrlEncodedFormEntity (map)
  • 0
    Если у вас есть фиксированный набор свойств, вы можете перейти к классу и создать его, если нет, тогда используйте map
7

Я собирал ваши объекты в один объект:

public class Person {

     private final String username;
     private final String[] cities;


     public Person(String username, String[] cities){
          this.username = username;
          this.cities = cities;
     }

     public String getUsername(){
          return this.username;
     }

     public String[] getCities(){  // or pass an int and return one city
          return this.cities; 
     }
}

Тогда вы можете использовать его в одной коллекции:

Person p1 = new Person("[email protected]", new String[]{"Liverpool","London"});
Person p2 = new Person("[email protected]", new String[]{"New York","California"});

List<Person> people = new ArrayList<Person>();
people.add(p1);
people.add(p2);
2

вы можете использовать Java HashMap. Это даст вам то, что вам нужно.

Map<String, Object> map = new HashMap<String, Object>();
0

Вы можете написать сопоставление pojo в упомянутые вами поля. Это будет яснее, чем использование коллекции для хранения отдельных объектов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню