如何在Map中存储多个字符串?

是否可以设置两个以上的值对?

例如:

Map 

号码,姓名,地址,电话 – 全部汇集在一起​​显示值。 每个值与其他值相关联。

你在拒绝对象。 您应该使用一个包含数字,名称,地址,电话的对象(也许您可以称之为ContactInformation )并将其放入地图中。

不, 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> yourMap = new HashMap>(); List info = new ArrayList(); info.add(number); info.add(name); info.add(address); info.add(phone); yourMap.put(key, info); 

注意google-collections有一系列实现这种结构的类,开箱即用 ,名为ListMultimap ,它的实现是ArrayListMultimap

不,Map只能有一个键并映射到一个值。

这是地图的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 userMap = new HashMap(); User user = new User(); //populate user userMap.put(uniqueUserID, user); 

万一你想要维护一个地图:“数字,名称” – >“地址,电话”,你不希望创建一个类来封装这些属性。 您可以查看Apache Commons Collections中方便的MultiKey:

http://commons.apache.org/collections/apidocs/org/apache/commons/collections/keyvalue/MultiKey.html

嗯,您可以为Person创建一个具有数字,名称,地址和phoneno的类,然后创建一个Map

正如其他人所说,地图是一个键和一个值之间的映射。 这就是地图的javadoc所说的(因为v5中的generics):

 Interface Map 

…其中K是键的类型,V是值的类型。 只是。 您必须准确定义两种类型。

值得一提的是,在数学中,’map’是一个术语,意思是将一种类型的值转换为另一种类型的值。 Java Map就是对此的反映(就像Scala中集合中可用的方法映射一样)。

您的问题表明您希望在4个字段中的每个字段上都键,而其他所有字段都成为值。 通常,它是在对象上打包的一个键和多个值。

请确认需要什么。