1.主要實現類:
HashMap(無序,底層哈希表結構,保證鍵唯一,需要重寫鍵對應類的hashCode和equals方法)、
LinkedHashMap(有序,底層哈希表結構+鏈表,哈希表保證鍵的唯一,鏈表保證元素的有序,需要重寫鍵對應類的hashCode和equals方法)、
IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap、Hashtable、Properties
2.Map集合的每一個元素都是成對存在的。Map<K,V>兩個泛型,K鍵,V值,K和V可以相同,也可不同。K是唯一的,V可以重復
主要方法
增改:V put(K key, V value):向集合中添加鍵值對,如何鍵重復,覆蓋之間的整個鍵值對,並返回被覆蓋的鍵值對的值
刪:V remove(OBject key):根據鍵從map集合中刪除鍵值對,返回被覆蓋的鍵值對的值
查:V get(K key):根據鍵從map集合中找到唯一對應的值
其他:int size();boolean isEmpty();boolean containsKey(Object key);boolean containsValue(Object value);void clear();
遍歷
map的遍歷主要通過keyset()和entryset()這兩個方法,利用增強for循環和迭代器進行遍歷
keyset():獲取到集合中的每個鍵,通過以鍵找值的方法遍歷
entryset():獲取到集合中的每個鍵值對對象,通過鍵值對對象獲取到鍵和值
增強for循環遍歷:
keyset:
for (String key : map.keySet()) { System.out.println(map.get(key)); }
entrySet:
//entryset() Entry是map中的內部接口,在map創建了一個Set集合( entrySet())保存鍵值對對象 for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey()+":"+entry.getValue()); }
迭代器遍歷:
keyset:
Iterator<String> it = map.keySet().iterator(); while(it.hasNext()) { String key = it.next(); System.out.println(key+":"+map.get(key)); }
entrySet:
Iterator<Map.Entry<String, String>> it2 =map.entrySet().iterator(); while(it2.hasNext()) { Map.Entry<String, String> entry=it2.next(); System.out.println(entry.getKey()+":"+entry.getValue()); }
Properties
1.properties是Map中很重要的一個集合
2.Properties是一個持久的屬性集,所謂持久 就是 它具有自己寫數據到文件的方法
3.Properties是沒有泛型,泛型固定為String
4.Properties類,具有Map接口的一切方法,還有具有一些自己特有的方法::
public String getProperty(String key)用指定的鍵在此屬性列表中搜索屬性的值,功能和Map中的get是一樣
public Object setProperty(String key, String value);添加鍵值對,功能和Map的put方法是一樣
public Set<String> stringPropertyNames()://和Map中的keySet方法是一樣
5.Properties具有持久化到文件的功能
store();//保存數據到文件,實際上不是保存到文件 而是寫入到流中,由流寫到文件
load();//從文件中加載數據,實際上不是直接加載文件,而是加載流中的數據,而流的數據是從該文件中讀取的
6.Properties本質上是一個Map集合
eg:
Properties遍歷
Properties pr = new Properties(); pr.setProperty("001", "蘋果"); pr.setProperty("003", "華為"); pr.setProperty("002", "小米"); Set<String> prkey = pr.stringPropertyNames(); for (String ps : prkey) { System.out.println(ps+":"+pr.getProperty(ps)); }
Properties持久化數據到文件中
pr.store(new FileWriter("study.properties"), "");
Properties讀取文件
Properties pr2 =new Properties(); pr2.load(new FileReader("study.properties")); System.out.println(pr2);