Java中Map相關的6大問題——每個開發人員都要注意
通常情況下Map是一種資料結構組成的一組鍵值對,Map中的key值是唯一的;Map是開發過程中經常被用到的一種資料結構,如何正確使用它,是每個Java開發人員都要掌握的,下面整理了使用Map的一引起注意事項。
網路配圖 1、Map轉為一個List 在Java中Map介面提供了三個集合檢視:key set,value set,和key-value set;它們可以使用建構函式或addAll()方法轉化為一個List,例子程式碼如下:
// key list List keyList =newArrayList(map.keySet()); // value list List valueList =newArrayList(map.values()); // key-value list List entryList =newArrayList(map.entrySet());
2、遍歷Map的方法 遍歷Map是Java中最基本的操作,具體使用方法通過例子進行說明,程式碼如下: 第一種方法:
for(Entry entry: map.entrySet()){// 返回鍵值
K key = entry.getKey();//返回value值
V value = entry.getValue();}
第二種方法:
Iterator itr = map.entrySet().iterator();while(itr.hasNext()){ Entry entry = itr.next();//返回鍵值 K key = entry.getKey();//返回value值 V value = entry.getValue();}
網路配圖 2、Map中key的操作 Map中的key也是一個用的比較多的操作,一種方法是把map.entry轉換成一個List,例子程式碼如下:
List list =newArrayList(map.entrySet());
Collections.sort(list, newComparator(){
@Override
publicint compare(Entry e1, Entry e2)
{return e1.getKey().compareTo(e2.getKey());
}
});
另一種方法是使用SortedMap總排序,進一步提供了key,例子程式碼如下:
SortedMap sortedMap =newTreeMap(newComparator(){ @Override publicint compare(K k1, K k2){ return k1.compareTo(k2); } }); sortedMap.putAll(map);
3、Map中的value值 具體使用通過程式碼說明,例子如下:
List list =newArrayList(map.entrySet());
Collections.sort(list, newComparator(){
@Override
publicint compare(Entry e1, Entry e2){
return e1.getValue().compareTo(e2.getValue());
}
});
4、如何初始化一個static final的Map 開發過程中需要用到一個執行緒安全的Map時,Map就需要保持不變,例項程式碼如下:
public class Test {
private static final Map map;
static{
map =newHashMap();
map.put(1, "one");
map.put(2, "two");
}}
public class Test {
private static final Map map;
static{
Map aMap =newHashMap();
aMap.put(1, "one");
aMap.put(2, "two");
map =Collections.unmodifiableMap(aMap);
}
}
網路配圖 5、HashMap、TreeMap和Hashtable之間的區別 Java中主要實現了三種介面:HashMap,TreeMap,Hashtable;最重要的區別是: 通過一個列表圖進行說明 | HashMap | Hashtable | TreeMap ------------------------------------------------------- 迭代順序 | 否 | 否 | 是 空鍵—值 | 是-是 | 否-否 | 否-是 執行緒安全 | 否 | 是 | 否 使用效能 | O(1) | O(1) | O(log n) 實用性 | 大量 | 大量 | 少量 6、如何建立一個空的Map 如果要求Map是不可變的,則使用Map =Collections.emptyMap(); 否則可以使用任何實現方法,例如Map =newHashMap(); 其他方法通過查API獲取 。