java集合--雙鏈

Map集合特點(diǎn);
1,內(nèi)部存儲(chǔ)的都是鍵key值value對(duì)。
2,必須要保證的鍵的唯一性。

Map常見功能。
1,存儲(chǔ)。v put(k,v);
2,獲取。v get(k);
3,移除。v remove(k);
4,Set<k> keySet();

        Set<String> keyset = map.keySet();//保證唯一性,用set來接受map中所有的鍵
        for(String key:keyset){
            System.out.println("key:"+key+" value:"+map.get(key));
        }

5,Set<Map.Entry<k,v>> entrySet();
將map集合中映射關(guān)系存儲(chǔ)到了Set集合中.映射關(guān)系:其實(shí)就是指鍵和值的對(duì)應(yīng)關(guān)系。映射關(guān)系是什么類型的呢? Map.Entry,就是數(shù)據(jù)類型,其中.是內(nèi)部的屬性

        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();  
       //增強(qiáng)For循環(huán)    
        for(Map.Entry<String, Integer> e: entrySet ){
            System.out.println("key:"+e.getKey()+" value:"+e.getValue());
        }
        //使用迭代器
        Iterator<Map.Entry<String, String>> it = entrySet.iterator();
        //遍歷Set中的映射關(guān)系對(duì)象。
        while(it.hasNext()){
            Map.Entry<String, String> me = it.next();//取到了映射關(guān)系對(duì)象。
            //獲取鍵。
            String key = me.getKey();
            //獲取值。
            String value = me.getValue();
            System.out.println(key+"-----"+value);
        }

6,Collection<v> values();

總結(jié):
map集合沒有迭代器,取出元素的方式:將map集合轉(zhuǎn)成單列結(jié)合,在使用單列集合的迭代器就可以了。map集合也不能直接被foreach循環(huán)遍歷。

關(guān)于Map.Entry。實(shí)際是map接口中定義了Entry接口
至于為何要定義內(nèi)部接口,參見內(nèi)部接口定義原理

Map

  • |--Hashtable:數(shù)據(jù)結(jié)構(gòu):哈希表。是同步的,不允許null作為鍵和值。被hashMap替代。
    • |--Properties:屬性集,鍵和值都是字符串(無泛型),而且可以結(jié)合流進(jìn)行鍵值的操作。IO流中頻繁使用。
  • |--HashMap:數(shù)據(jù)結(jié)構(gòu):哈希表。不是同步的,允許null作為鍵和值。
    • |--LinkedHashMap:基于鏈表+哈希表。可以保證map集合有序(存入和取出的順序一致)。
  • |--TreeMap:數(shù)據(jù)結(jié)構(gòu):二叉樹。不是同步的。可以對(duì)map集合中的鍵進(jìn)行排序。

一道題目:
"werertrtyuifgkiryuiop",獲取字符串中每一個(gè)字母出現(xiàn)的次數(shù)。
要求返回結(jié)果個(gè)格式是 a(1)b(2)d(4)......

char[] chs = str.toCharArray();
        Map<Character, Integer> map = new TreeMap<Character, Integer>();
        for (Character s : chs) {
            Integer value = map.get(s);         
            int count = 0;          
            if(value!=null){
                count = value;
            }
            count ++;
            map.put(s, count);
        }
        StringBuilder sb = new StringBuilder();
        //2,遍歷map集合。
        for(Character key  : map.keySet()){
            Integer value = map.get(key);   
            sb.append(key+"("+value+")");
        }

Collections: 集合框架中的用于操作集合對(duì)象 工具類。
* 都是靜態(tài)的工具方法。
* 1,獲取Collection最值。
* 2,對(duì)List集合排序,也可以二分查找。
* 3,對(duì)排序逆序。
* 4,可以將非同步的集合轉(zhuǎn)成同步的集合。
* Xxx synchronizedXxx(Xxx) List synchronizedList(List)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,476評(píng)論 0 16
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,658評(píng)論 0 3
  • 一、集合框架的概述 1、概述: 1、簡述:所謂集合,就是為方便對(duì)多個(gè)對(duì)象的操作,對(duì)對(duì)象進(jìn)行存儲(chǔ)。集合就是存儲(chǔ)對(duì)象最...
    玉圣閱讀 603評(píng)論 0 4
  • title: java集合框架學(xué)習(xí)總結(jié) tags:集合框架 categories:總結(jié) date: 2017-03...
    行徑行閱讀 1,838評(píng)論 0 2
  • 1 Map集合N016 1.1Map接口 【 ? 實(shí)現(xiàn)Map接口的集合類用來存儲(chǔ)"鍵-值"映射對(duì)。 ? JDK...
    征程_Journey閱讀 448評(píng)論 0 0

友情鏈接更多精彩內(nèi)容