java有哪些容器以及区别

容器的基本概念:
1.Collection:一个独立元素的序列,这些元素都服从一条或者多条规则。 List必须按照插入的顺序保存元素,而set不能有重复的元素。Queue按照排队规则来确定对象产生的顺序。
2.Map:一组成对的“键值对”对象,允许你使用键来查找值。
java容器主要包含Collection和Map两大类,其下又有很多子类,如下图所示:

java有哪些容器以及区别
3.Collection 和 Collections 有什么区别?
1.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方发,所有集合都是他的子类。
2.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法,就像一个工具类,比如提供排序的方法:collections.sort(list)。
4.List、Set、Map有什么区别?
List、Set、Map的区别主要体现在两个方面:元素是否有序、是否允许元素重复。
三者之间的区别如下表:
java有哪些容器以及区别
5.HashMap和Hashtable有什么么区别?
存储:HashsMap运行Key和value为null,而Hashtable不行。
线程安全:Hashtable是线程安全的,而HashMap是非线程安全的。
推荐使用:Hashtable是保留类不建议使用,推荐在单线程环境下使用HashMap 替代,如果使用多线程则用ConcurrentHashMap替代。
6.ArrayList和LinkedList有什么区别?
数据结构实现:ArrayList是动态数组结构实现,而LinkdeList是双向链表结构实现。
访问效率:ArrayList在随机访问的时候要比LinkedList高,因为LinkedList是线性存储方式.
增加和删除效率:在非收尾的增加和删除,LinkedList要比ArrayList效率高。
7.Array和ArrayList有什么区别?
Array可以存储基本数据类型和对象,ArrayList只能存储对象。
Array是固定大小的,而ArrayList大小是自动扩展的。
Array内置方法没有ArrayList多。
8.ArrayList和Vector有什么区别?
线程安全:Vector使用Synchronized来实现线程同步,是线程安全的。
性能:ArrayList要优于Vector。
扩容:ArrayList和Vector都会根据需要动态调整容量,只不过ArrayList每次增加50%,而Vector每次增加一倍。