Java集合小记

原文链接

摘要: java集合小记

Collection下集合

List

  是一个有序集合,维持的顺序是元素插入的顺序,允许元素重复

1.ArrayList:

  数组,查找元素很快,但删除元素和添加元素的效率相对较差,默认大小是 10 个元素

2.LinkedList: 

  双向链表,删除、添加元素的效率很高,但查找元素的的效率较差

3.Vector:

  线程安全的按顺序存放的数组,大部分public方法都由synchronized修饰

 

Set

  不与许重复元素

1.HashSet:

  实现是HashMap,按照key的哈希值存储,无序

2.TreeSet:

  值有序,按照元素值大小排序,实现是NavigableMap(SortedMap子类/TreeMap)

3.SortedSet接口 : 有序,自己实现comparator方法来排序

4.LinkedHashSet:  维持的顺序是元素插入的顺序

 

不属于collection,但与set超有关系的... ...

Map

1.HashMap : 元素无序,允许一个null key,默认大小是16个元素

2.TreeMap : 使用红黑树实现

3.SortedMap接口 : 需自己实现comparator方法实现排序

4.LinkedHashMap : 维持的顺序是元素插入的顺序

<span style="color:#333333"><span style="color:#f8f8f2"><code class="language-java"><span style="color:slategray"><span style="color:#75715e">/**
* The iteration ordering method for this linked hash map: <tt>true</tt>
* for access-order, <tt>false</tt> for insertion-order.
*/</span></span>
<span style="color:slategray"><span style="color:#75715e">// 如果为true,则按照访问顺序;如果为false(default),则按照插入顺序。</span></span>
<span style="color:#66d9ef"><span style="color:#f92672">private</span></span> <span style="color:#66d9ef"><span style="color:#f92672">final</span></span> <span style="color:#66d9ef"><span style="color:#f92672">boolean</span></span> accessOrder<span style="color:#f8f8f2">;</span>
<span style="color:slategray"><span style="color:#75715e">/**
* 双向链表的表头元素。
 */</span></span>
<span style="color:#66d9ef"><span style="color:#f92672">private</span></span> <span style="color:#66d9ef"><span style="color:#f92672">transient</span></span> Entry<span style="color:#f8f8f2"><</span>K<span style="color:#f8f8f2">,</span>V<span style="color:#f8f8f2">></span> header<span style="color:#f8f8f2">;</span>

<span style="color:slategray"><span style="color:#75715e">/**
* LinkedHashMap的Entry元素。
 */</span></span>
<span style="color:slategray"><span style="color:#75715e">// 继承HashMap的Entry元素,又保存了其上一个元素before和下一个元素after的引用</span></span>
<span style="color:#66d9ef"><span style="color:#f92672">private</span></span> <span style="color:#66d9ef"><span style="color:#f92672">static</span></span> <span style="color:#66d9ef"><span style="color:#f92672">class</span></span> <span style="color:#f8f8f2">Entry</span><span style="color:#f8f8f2"><</span><span style="color:#f8f8f2">K</span><span style="color:#f8f8f2">,</span><span style="color:#f8f8f2">V</span><span style="color:#f8f8f2">></span> <span style="color:#66d9ef"><span style="color:#f92672">extends</span></span> <span style="color:#f8f8f2">HashMap</span><span style="color:#f8f8f2">.</span><span style="color:#f8f8f2">Entry</span><span style="color:#f8f8f2"><</span><span style="color:#f8f8f2">K</span><span style="color:#f8f8f2">,</span><span style="color:#f8f8f2">V</span><span style="color:#f8f8f2">></span> <span style="color:#f8f8f2">{</span>
    Entry<span style="color:#f8f8f2"><</span>K<span style="color:#f8f8f2">,</span>V<span style="color:#f8f8f2">></span> before<span style="color:#f8f8f2">,</span> after<span style="color:#f8f8f2">;</span>
    ……
<span style="color:#f8f8f2">}</span></code></span></span>

5.Hashtable : 

  是同步的,比较慢,几乎所有的 public 的方法都是 synchronized 的,而有些方法也是在内部通过 synchronized 代码块来实现

,不允许有个空的 key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值