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

use*_*978 23 java map

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

例如:

Map<String,String,String,String>
Run Code Online (Sandbox Code Playgroud)

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

Joa*_*uer 134

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

  • 对."你在拒绝对象." 得到一件带有这个口号的T恤(+1) (25认同)
  • @user:Bozho提供了一个很好的例子,看看他的答案. (3认同)

Boz*_*zho 49

不,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));
Run Code Online (Sandbox Code Playgroud)

  • 把一些'最后的东西放在那里! (8认同)

Gar*_*vis 13

'正确'的解决方案是使用一个保存命名字段中的值的对象,但本着回答问题的精神,一个简单的(如果不清洁)解决方案将使用:

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);
Run Code Online (Sandbox Code Playgroud)

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

  • 我不会为糟糕的解决方案提供示例代码.我看到了想要解释这个问题的原因,但是示例代码很可能只是简单地复制而不学习为什么它不是一个好主意. (2认同)
  • 一切都在为人们提供足够的信息来吹自己的脚."是的,先生,如果你把它指向你的脚并将小东西拉到手柄前面就会爆炸" (2认同)
  • 虽然提供这种解决方案可能是"危险的",但也有一些希望人们会看到它并意识到为什么它的丑陋和问题,而不仅仅是被告知.嗯,至少可以希望...... (2认同)

Buh*_*ndi 7

不,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....
}
Run Code Online (Sandbox Code Playgroud)

然后将它添加到地图中......

Map<String, User> userMap = new HashMap<String, User>();
User user = new User();
//populate user
userMap.put(uniqueUserID, user);
Run Code Online (Sandbox Code Playgroud)


小智 5

以防万一您想维护一个映射:“号码,姓名”->“地址,电话”,并且您不希望创建一个类来封装这些属性。您可以在 Apache Commons Collections 中查看方便的 MultiKey:

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