對JAVA集合中Map的簡單理解


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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM