java jdk中使用到的数据结构

在java中可能很多人都会忽略数据结构(类似树,跳跃表等),大家都比较熟悉链表,数组,栈,队列,哈希表等。最近看了jdk中关于树和跳跃表等的实现,其实数据结构真的是基础,有兴趣的java程序员可以翻开jdk的代码仔细阅读下面几种数据结构的学习。

 

TreeMap: 红黑树 http://v.163.com/movie/2010/12/9/J/M6UTT5U0I_M6V2TJ49J.html 这里有网易公开课的教学视频

PriorityQueue:最小堆 比较简单的一种实现,queue[n]的左右儿子是queue[2*n+1]和queue[2*n+2],每次根据排序类取第一个queue[0],然后把queue[size-1]作为树跟执行siftDown,插入的时候是直接赋值queue[size]=alue,然后再执行siftUp操作。

ConcurrentSkipListMap:跳跃表实现 http://v.163.com/movie/2010/12/7/S/M6UTT5U0I_M6V2TTJ7S.html 有意思的是每次插入一个键值对之后,都是根据随机值更新这个结点的索引结点。

ArrayList:数组实现,每次需要扩增容量是int newCapacity = oldCapacity + (oldCapacity >> 1) ,最简单的实现了,也比较常用了。

HashMap: 哈希表 冲突解决方法就是链表了。不知到有没有其他数据结构是用线性查找法等其他冲突解决方法。

HashSet:内部使用的是Hashap来处理重复元素去除的,比较简单实用的方法。

LinkedHashMap :单向链表实现了

LinkedHashSet: 内部使用LinkedHashMap

LinkedList:双向链表实现

ArrayDeque :队列,其实也是数组,加上头尾索引

Stack:栈 也是用数组来模拟栈

 

在java中有什么其他的数据结构欢迎大家多多留言,后续我看到也会再做整理。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值