java集合--双链

Map集合特点;
1,内部存储的都是键key值value对。
2,必须要保证的键的唯一性。

Map常见功能。
1,存储。v put(k,v);
2,获取。v get(k);
3,移除。v remove(k);
4,Set keySet();

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

5,Set> entrySet();
将map集合中映射关系存储到了Set集合中.映射关系:其实就是指键和值的对应关系。映射关系是什么类型的呢? Map.Entry,就是数据类型,其中.是内部的属性

        Set> entrySet = map.entrySet();  
       //增强For循环    
        for(Map.Entry e: entrySet ){
            System.out.println("key:"+e.getKey()+" value:"+e.getValue());
        }
        //使用迭代器
        Iterator> it = entrySet.iterator();
        //遍历Set中的映射关系对象。
        while(it.hasNext()){
            Map.Entry me = it.next();//取到了映射关系对象。
            //获取键。
            String key = me.getKey();
            //获取值。
            String value = me.getValue();
            System.out.println(key+"-----"+value);
        }

6,Collection values();

总结:
map集合没有迭代器,取出元素的方式:将map集合转成单列结合,在使用单列集合的迭代器就可以了。map集合也不能直接被foreach循环遍历。

关于Map.Entry。实际是map接口中定义了Entry接口
至于为何要定义内部接口,参见内部接口定义原理

Map

  • |--Hashtable:数据结构:哈希表。是同步的,不允许null作为键和值。被hashMap替代。
    • |--Properties:属性集,键和值都是字符串(无泛型),而且可以结合流进行键值的操作。IO流中频繁使用。
  • |--HashMap:数据结构:哈希表。不是同步的,允许null作为键和值。
    • |--LinkedHashMap:基于链表+哈希表。可以保证map集合有序(存入和取出的顺序一致)。
  • |--TreeMap:数据结构:二叉树。不是同步的。可以对map集合中的键进行排序。

一道题目:
"werertrtyuifgkiryuiop",获取字符串中每一个字母出现的次数。
要求返回结果个格式是 a(1)b(2)d(4)......

char[] chs = str.toCharArray();
        Map map = new TreeMap();
        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: 集合框架中的用于操作集合对象 工具类。
* 都是静态的工具方法。
* 1,获取Collection最值。
* 2,对List集合排序,也可以二分查找。
* 3,对排序逆序。
* 4,可以将非同步的集合转成同步的集合。
* Xxx synchronizedXxx(Xxx) List synchronizedList(List)

你可能感兴趣的:(java集合--双链)