美文网首页
java集合--双链

java集合--双链

作者: 喵不吱 | 来源:发表于2017-05-27 19:12 被阅读0次

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

    Map常见功能。
    1,存储。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集合中映射关系存储到了Set集合中.映射关系:其实就是指键和值的对应关系。映射关系是什么类型的呢? Map.Entry,就是数据类型,其中.是内部的属性

            Set<Map.Entry<String, Integer>> entrySet = map.entrySet();  
           //增强For循环    
            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中的映射关系对象。
            while(it.hasNext()){
                Map.Entry<String, String> me = it.next();//取到了映射关系对象。
                //获取键。
                String key = me.getKey();
                //获取值。
                String value = me.getValue();
                System.out.println(key+"-----"+value);
            }
    

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

    相关文章

      网友评论

          本文标题:java集合--双链

          本文链接:https://www.haomeiwen.com/subject/zyvqfxtx.html