Java基础整理——集合知识小结

java集合这块虽然一直在用,但近期天天忙于工作敲码真的难免遗忘。今记录如下以备日后查看。

先盗图一张:

整个集合框架如上。其中set(集)在个人实际工作中暂时用的最少(几乎不用)。其内部存储数据无序。两个常见(面试常见)子类HashSet和TreeSet前者以散列表实现,后者以红黑树实现。顺便回顾红黑树作为一种特殊的有序二叉树,具有的五个特性:1.每个节点都为红色或黑色,2.根节点必然为黑色,3.红色节点不连续。4.空叶节点必为黑色,5.任意路径黑色节点长度相同。红黑树作为一种相对平衡的二叉树,相比之下减少了每次增删节点时旋转的次数,更便于实现(也可能是算法导论给出了实现)。hashset方面暂时略过,散列算法方面会在hsahmap处一起归类

List(列表)中vector作为一种早期实现,虽然能保证内部数据线程安全,但实际上用的反而不多。ArrayList为底层为可变数组,Linkedlist为通过一个Entry内部类实现的双向链表。这就决定了前者便于查找但是插入可能引起可变数组扩容,后者便于插入但是查找相对困难。

queue的到目前为止只用过PriorityQueue用于排队。通过poll方法取优先级最高的数据并移除队列。

map(映射)中hashmap为通过一个Node内部类实现的散列表。treeMap也是以红黑树实现。hashtable宝整理线程安全,currenthashmap以分段锁保证了线程安全。

 

posted @ 2017-12-19 23:29  豆豆323  阅读(159)  评论(0编辑  收藏  举报