Java数据结构的小结

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

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

Java数据结构的小结_第1张图片

由上面的图片可以看出:

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值唯一性

你可能感兴趣的:(Java,面试总结)