Java数据结构的小结

曾经,被别人问到,Java的数据结构有哪些?当时,一脸的蒙啊,甚是尴尬。于是特意的百度了一下,做出一下总结:

Java.util包中包含了三个重要的接口:List(列表),set(保证元素的唯一性)、map(确保维护多个key-value键值对的数据,并且保证key的唯一性)。其中,子类的实现各有不同,比如:是否有序、是否线程安全等。


由上面的图片可以看出:

list和set都是继承了collection接口

List

ArrayList和vector都是线性表,使用Object的数组作为容器来存储数据,添加了很多动态的数组来维护这个容器,使其容量可以动态的增长,极大的提高了开发的效率。主要的区别在于ArrayList是非同步,而vector是同步的。


LinkedList是链表结构,插入的位置是随机的,删除数据时速度非常的快,遍历时速度慢。


由以上的文字可以看出,需要根据实际的情况来选择;ArrayList,在非同步的情况下使用,而且不是频繁的删除操作时。vector,在同步时选择使用;LinkedList在频繁删除时使用。


Map键值对形式,key是唯一的

hashmap实现的原理为:将put进来的key -value封装成一个Entry对象存储到一个Entry数组中,位置(数组下标)由key的哈希值与数组的长度计算而来,如果数组当前下标已有值,则将当前数组下标下的值指向一个新添加的entry对象中。


Set(保证容器内元素的唯一)

set结构其实就是维护iygeMap来存储数据的,利用Map结构的key值唯一性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值