zoukankan      html  css  js  c++  java
  • 集合总览

    参考https://www.cnblogs.com/CarpenterLee/p/5545987.html

     思想:从接口出发掌握集合

    1.注意集合的“接口”框架图,熟记,并扫盲SortSet和NavigableSet等这种接口。

    框架图:

    来源:http://www.cnblogs.com/CarpenterLee/p/5414253.html

    2.熟记常见实现类,他们实现的接口,以及异同

    Map: hashMap, LinkedHashMap,TreeMap,IdentityHashMap,weakHashMap

       A) identityHashMap:https://segmentfault.com/q/1010000002779228

    1. 简单说IdentityHashMap与常用的HashMap的区别是:前者比较key时是“引用相等”而后者是“对象相等”,即对于k1和k2,当k1==k2时,IdentityHashMap认为两个key相等,而HashMap只有在k1.equals(k2) == true 时才会认为两个key相等。IdentityHashMap 允许使用null作为key和value. 不保证任何Key-value对的之间的顺序, 更不能保证他们的顺序随时间的推移不会发生变化.

    2. IdentityHashMap有其特殊用途,比如序列化或者深度复制。或者记录对象代理。

    3. 举个例子,jvm中的所有对象都是独一无二的,哪怕两个对象是同一个class的对象,而且两个对象的数据完全相同,对于jvm来说,他们也是完全不同的,如果要用一个map来记录这样jvm中的对象,你就需要用IdentityHashMap,而不能使用其他Map实现。

      B)

      HashMap不保证顺序。TreeMap实现了 SortMap,保证按照元素的升序。LinkedHashMap使用链表, 在HashMap的基础上保证了插入顺序。

      HashSet,TreeSet,同理。没有LinkedTreeSet,要用Collections.newSetFromMap(new LinkedHashMap<>())  包装实现

      C)NavigableMap:TreeMap实现了该接口。TreeSet同理(NavigableSet)

      NavigableMap除了继承SortedMap的特性外,它的提供的功能可以分为4类:
      第1类,提供操作键-值对的方法。
                     lowerEntry、floorEntry、ceilingEntry 和 higherEntry 方法,它们分别返回与小于、小于等于、大于等于、大于给定键的键关联的 Map.Entry 对象。
                     firstEntry、pollFirstEntry、lastEntry 和 pollLastEntry 方法,它们返回和/或移除最小和最大的映射关系(如果存在),否则返回 null。
      第2类,提供操作键的方法。这个和第1类比较类似
                     lowerKey、floorKey、ceilingKey 和 higherKey 方法,它们分别返回与小于、小于等于、大于等于、大于给定键的键。
      第3类,获取键集。
                    navigableKeySet、descendingKeySet分别获取正序/反序的键集。
      第4类,获取键-值对的子集。

      详见:https://my.oschina.net/kevinair/blog/191242

      

    Queue: PriorityQueue, ArrayDeque, LinkedList(其实更直接的实现了Deque)以及7种BlockingQueue

    3.Collection实现了Iteratable,所以所有集合都可以通过iterator遍历

      集合大多数实现了,Cloneable和Serializable

    4.并发容器,

      List: CopyOnWriteArrayList (实现了LIst)

      Set: CopyOnWriteArraySet (实现了Set, 注意:未实现Cloneable)

                   ConcurrentSkipListSet  (实现了NavigableSe)

      Queue: 7种BlockingQueue 

      Map: ConcurrentHashMap(实现了ConcurrentMap)     

        ConcurretnSkipListMap(实现了ConcurretnNavigableMap)

       

  • 相关阅读:
    树套树
    Luogu P2839 [国家集训队]middle
    苟随笔
    BJOI2014 大融合
    轻量树上问题选做
    sb的斜率优化笔记
    CDialogEx::OnPaint()的问题,或者为什么在对话框程序的OnPaint中绘图无效的问题
    VC6的工程转到VC2010或更高版本出现fatal error C1189编译错误的解决方法
    C语言实现的反转字符串
    在终端输入npm run serve时出现npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法
  • 原文地址:https://www.cnblogs.com/heyboom/p/10795018.html
Copyright © 2011-2022 走看看