集合框架
2023-03-05 23:00:19 0 举报
AI智能生成
集合
作者其他创作
大纲/内容
Collection<<interface>><br>
<span style="font-size: inherit;">Set<<interface>></span><br>
SortedSet<<interface>><br>
NavigableSet<<interface>><br>
<font color="#388e3c">ConcurrentSkipListSet</font><br>
<font color="#2196f3">AbstractSet</font><br>
TreeSet
HashSet:<br>HashSet <font color="#d32f2f">从源码分析是使 HashMap 来实现的</font>,只是Valu 固定为一个静态对象,<br><font color="#f44336">使用 Key 保证集合元素的唯一性</font>,但它不保证集合元素的顺序。<br>怎么保证值的唯一性?<br>key是对象,通过对象的hashcode和其他对象的hashcode做比较,如果不同则不存在相同值,可以存入;<br>如果存在hashcode相同则继续使用equals()比较两个对象是否一样,如果一样则不让其加入操作。<br>
LinkedHashSet<br>
List<<interface>><br><br>List 集合是线性数据结构的主要实现<br>
<font color="#2196f3">AbstractList</font><br>
ArrayList<br>
ArrayList 是容量可以改变的非线程安全集合,内部实现使用数组进行存储,<font color="#d32f2f">数组天然⽀持随机<br>访问,时间复杂度为 O(1)</font>
实现了 RandomAccess 接⼝的list,优先选择普通 for 循环 ,其次 foreach
Vector:<br>Vector 类的所有⽅法都是同步的。可以由两个线程安全地访问⼀个Vector对象、<br>但是⼀个线程访问Vector的话代码要在同步操作上耗费⼤量的时间。<br>
Stack
AbstractSequentialList<br>
LinkedList
LinkedList 的本质是双向链表,底层使用双向链表数据结构<br>
与 ArrayList 相比 LinkedList 的插入和删除速度<br>更快,但是随机访问速度则很慢<br>
这个接口同时具有队列和栈的性质。
LinkedList 的优点在于可以将零<br>散的内存单元通过附加引用的方式关联起来,形成按链路顺序查找的线性结构,内存<br>利用率较高。
LinkedList 采⽤链表存储,所以对于 add(E e) ⽅法的插⼊,删除元素时间复杂<br>度不受元素位置的影响,近似 O(1),如果是要在指定位置 i 插⼊和删除元素的话<br>( (add(int index, E element) ) 时间复杂度近似为 o(n)) 因为需要先移动到指定位置<br>再插⼊。
<font color="#388e3c">CopyOnWriteArrayList</font><br>
Queue<<interface>>
BlockingQueue<<interface>><br>
Deque<<interface>>
<font color="#2196f3">AbstractQueue</font>
<font color="#388e3c">LinkedBlockingQueue</font><br>
<font color="#388e3c">SynchronousQueue</font><br>
<font color="#388e3c">ArrayBlockingQueue</font>
<font color="#388e3c">PriorityBlockingQueue</font><br>
<font color="#388e3c">DelayQueue</font>
Map<<interface>>
ConcurrentMap<<interface>><br>
<font color="#388e3c">ConcurrentHashMap</font>
HashTable
<font color="#2196f3">AbstractMap</font>
TreeMap
HashMap:<br><ul><li><font color="#f44336">几个重要属性</font>:<font color="#d32f2f">1、</font><font color="#f44336">loadFactor</font>,它是负载因子,默认值是 0.75,<br>表示扩容前;<font color="#d32f2f">2、</font><font color="#f44336">threshold</font> 它是记录 HashMap 所能容纳的键<br>值对的临界值,超过临界值要进行扩容,它的计算规则是负载因子乘以数组长度。<br><font color="#d32f2f">3、</font><font color="#f44336">size</font>,它用来记录 HashMap 实际存在的键值对的数量。</li></ul> <font color="#f44336">4、modCount</font>,它用来记录 HashMap 内部结构发生变化的次数。<br> <font color="#f44336">5、DEFAULT_INITIAL_CAPACITY </font>,它规定的默认容量是 16。
LinkedHashMap<br>
SortedMap<<interface>>
NavigableMap<<interface>><br>
<font color="#388e3c">ConcurrentSkipListMap</font><br>
0 条评论
下一页