[英]How to create a HashMap in java based on the order of HashSet
我有一個LinkedHashMap,並想基於HashSet下的條目創建一個新的LinkedHashMap 。
import java.util.*;
public class LinkedHashMapDemo {
public static void main(String args[]) {
// Currently empty
LinkedHashMap<String, String> newhashmap = new LinkedHashMap<String, String>();
// old hash map
LinkedHashMap<String, String> oldhashmap = new LinkedHashMap<String, String>();
// Put elements to the map
oldhashmap.put("Zara", "zaravalue");
oldhashmap.put("Mahnaz", "Mahnazvalue");
oldhashmap.put("Ayan", "Ayanvalue");
oldhashmap.put("Daisy", "Daisyvalue");
oldhashmap.put("Qadir", "Qadirvalue");
HashSet<String> hs = new HashSet<String>();
// add elements to the hash set
hs.add("Zara");
hs.add("Ayan");
hs.add("Qadir");
Iterator iterator = hs.iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String val = oldhashmap.get(key);
}
}
}
這樣新的newhashmap看起來就像
newhashmap.put("Zara", "Zaravalue");
newhashmap.put("Ayan", "Ayanvalue");
newhashmap.put("Qadir", "Qadirvalue");
newhashmap.put("Mahnaz", "Mahnazvalue");
newhashmap.put("Daisy", "Daisyvalue");
請讓我知道是否可能
如果您願意從舊的HashSet中刪除,則可以使用remove()
方法。
while (iterator.hasNext()) {
String key = (String) iterator.next();
String val = oldhashmap.remove(key);
newhashmap.put(key, val);
}
newhashmap.putAll(oldhashmap);
您可能還想查看使用所需順序使用自定義Comparator創建TreeMap的方法,但是對於您的示例而言,這可能有些復雜。
編輯:您還需要將HashSet更改為LinkedHashSet,以便可以依賴排序。
我的第一種方法如下所示:
...
LinkedHashMap<String, String> storage = new LinkedHashMap<String, String>();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String val = oldhashmap.get(key);
if(hs.contains(val){
newhashmap.put(key, val);
}else {
storage.put(key, val);
}
}
newhashmap.putAll(storage);
...
這樣,您可以避免修改舊的哈希圖或對數據進行兩次迭代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.