是否可以设置两个以上的值对?
例如:
Map<String,String,String,String>
Run Code Online (Sandbox Code Playgroud)
号码,姓名,地址,电话 - 全部汇集在一起显示值.每个值与其他值相关联.
Joa*_*uer 134
你在拒绝对象.您应该使用一个包含数字,名称,地址,电话的对象(也许您可以调用它ContactInformation)并将其放入地图中.
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)
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
不,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
| 归档时间: |
|
| 查看次数: |
21799 次 |
| 最近记录: |