Возможно ли установить более двух значений пары?
Например:
Map<String,String,String,String>
номер, имя, адрес, телефон - все собраны для отображения значений. Каждое значение связано с другими.
Возможно ли установить более двух значений пары?
Например:
Map<String,String,String,String>
номер, имя, адрес, телефон - все собраны для отображения значений. Каждое значение связано с другими.
Вы находитесь в отрицании объектов. Вы должны использовать объект, который содержит номер, имя, адрес, телефон (возможно, вы могли бы назвать его ContactInformation
) и поместить его на карту.
Нет. a Map
имеет только один ключ. Если вы хотите, чтобы ваше значение содержало больше информации, оберните строки в новый класс:
public class PersonalInfo {
private final String name;
private final String address;
private final String phone;
// constructor and getters
}
map.put(number, new PersonalInfo(name, address, phone));
"Правильное" решение - использовать объект, который содержит значения в именованных полях, но в духе ответа на заданный вопрос простое (если нечистое) решение должно было бы использовать:
Map<String,List<String>> yourMap = new HashMap<String,List<String>>();
List<String> info = new ArrayList<String>();
info.add(number);
info.add(name);
info.add(address);
info.add(phone);
yourMap.put(key, info);
Примечание google-collections имеет серию классов, которые реализуют эту структуру прямо из коробки под названием ListMultimap и его реализация ArrayListMultimap
Нет, карта может иметь только один ключ и сопоставляется с одним значением.
Это Javadoc для карты:
Объект, который сопоставляет ключи значениям. карта не может содержать дубликаты ключей; каждый ключ может отображать не более одного значения.
Что вы можете сделать, так это создать объект под названием User
с некоторыми подробностями, например,
public class User implements Serializable {
private String firstName;
private String lastNumber;
private String address;
private String phoneNumber;
//Generated getters and setters here....
}
затем добавьте его на такую карту...
Map<String, User> userMap = new HashMap<String, User>();
User user = new User();
//populate user
userMap.put(uniqueUserID, user);
На всякий случай вы хотите сохранить карту: "номер, имя" → "адрес, телефон", и вы не хотите создавать класс для инкапсуляции этих атрибутов. Вы можете посмотреть в удобном MultiKey в коллекциях Apache Commons:
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/keyvalue/MultiKey.html
Hmmm, Вы можете создать класс для Person с номером, именем, адресом и phoneno, затем вы создадите карту
Как говорили другие, карта представляет собой сопоставление между ключом и значением. Вот почему javadoc для карты говорит (поскольку generics в v5):
Interface Map<K,V>
... где K - тип ключа, а V - тип значения. Просто < K, V > . Вы должны определить ровно два типа.
Следует отметить, что в математике "карта" - это термин, означающий преобразование значения одного типа в значение другого типа. Карта Java является отражением этого (как и карта методов, доступная для коллекций в Scala).
В вашем вопросе вам предлагается, чтобы ключ на каждом из 4 полей, а все остальные стали значениями. Хотя в общем случае это один ключ и несколько значений, упакованных на объект.
Пожалуйста, подтвердите, что требуется.