集合知识小结

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以分段锁保证了线程安全。

 

转载于:https://www.cnblogs.com/fbw-gxy/p/8068292.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值