簡體   English   中英

如何在Map中存儲多個字符串?

[英]How to store more than one string in a Map?

是否可以設置兩個以上的值對?

例如:

Map<String,String,String,String>

號碼,姓名,地址,電話 - 全部匯集在一起​​顯示值。 每個值與其他值相關聯。

你在拒絕對象。 你應該使用一個包含數字,名稱,地址,電話的對象(也許你可以稱之為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<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

不,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<String, User> userMap = new HashMap<String, User>();
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中的泛型):

Interface Map<K,V>

...其中K是鍵的類型,V是值的類型。 只是<K,V>。 您必須准確定義兩種類型。

值得一提的是,在數學中,'map'是一個術語,意思是將一種類型的值轉換為另一種類型的值。 Java Map就是這樣的反映(就像Scala中集合上可用的方法映射一樣)。

您的問題表明您希望在4個字段中的每個字段上都有鍵,而其他所有字段都成為值 通常,它是在對象上打包的一個鍵和多個值。

請確認需要什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM