Java集合容器(JDK1.8)

Java集合容器(JDK1.8)

       Java集合框架提供了一套性能优良,使用方便的接口和类,他们位于java.util包中。存放在集合中的数据被称为element

接口

Collection

       接口存储的元素不唯一且无序。线性,可迭代。继承接口 java.lang.Iterable。实现这个接口的类型,必须可迭代。 可以使用forEach循环

List

       接口存储的元素不唯一,有索引,查询速度快。

Set

       无序(底层hash表存储无序)、唯一(重写hashCode&equals方法)、底层是Map。

Map

       实现 Map 接口的类用来存储键(key) -值(value)对 。key唯一,查询快。

实现类

ArrayList

       ArrayList底层是一个数组。Jdk1.5之前默认长度是10, jdk 1.5之后是0。当用户输入数据之后,底层会初始化,那个时候默认长度为10。在数组容量未超标的时候,末尾增删效率极高。有索引,依据索引查找效率极高。假如数组超标了,底层会有一个算法对数组再进行扩容,从而达到一个动态的效果。

关于顺序表可以点击这篇文章

LinkedList

       底层双循环链表。头尾增删效率极高。随机增删效率较高。作为栈或队列使用几率高。链表和数组的区别主要在于。链表无须初始化长度,无需因为扩容而占用过多空间。当需要增加和删除时,链表只需要改变指针方向就可以实现,而不用像数组一样要挪动大量元素。

关于链表可以点击这篇文章

Vector

       Vector和ArrayList底层差不多,区别就是,Vector线程比较安全,但是效率低。ArrayList效率高,但是线程并没有Vector安全。不过在jdk1.2之后就已经很少有人使用Vector~

HashMap

       底层是散列表(Hashtable),数组+链表。key类型必须提供hashCode和equals方法的实现。

TreeMap

       key的类型实现Compareable接口。或者提供Comparetor类型的对象。

LinkedHashMap

       额外增加一个链表,记录数据存储顺序。作为索引存在。 其他和HashMap一致。

你可能感兴趣的:(JavaSE)