面试题:Java中的集合,总结list,set,map之间的区别

先上一张常用集合:
集合框架

一.
List:有序集合,序列,可以重复
ArrayList:
1.允许null值,不同步,可调整大小。
2.在内存中分配连续的空间,在遍历元素和随机访问元素时效率高。
3.如果多个线程同时访问ArrayList 实例,并且至少有一个线程在结构上修改列表,那么它必须在外部进行同步。
LinkedList:

1.允许null值.不同步,List和Decode接口的双链表实现,与ArrayList类似。
2.链表存储方式,在插入,删除元素时效率高,提供额外的addFist(),addlast(),removeFirst(),removeLast(),索引到列表中的操作将从开头或结尾遍历列表,以较接近指定索引为准。
3.如果多个线程同时访问LinkedList实例,并且至少有一个线程在结构上修改列表,那么它必须在外部进行同步。
Vector
1.实现可扩展的对象数组。(像数组一样,它包含可以使用整数索引访问的组件。但是,Vector矢量的大小可根据需要增大或缩小,以便在创建“矢量”后添加和移除项目。)
2.Vector中最后一个元素后面的任何数组元素都为null。
3.存储矢量分量的数组缓冲区, 矢量的容量是这个数组缓冲区的长度,并且至少足够大以包含所有矢量的元素。
Stack:类表示后进先出(LIFO)对象堆栈。

二.
Set:一个不包含重复元素的集合,且最多有一个null
HashSet:允许null,不同步

三,
**Map:**key_value;不允许重复
HashMap:非同步,允许null

猜你喜欢

转载自blog.csdn.net/weixin_36027342/article/details/79972399
今日推荐