欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对于Collection、List、Set、Map的区别

程序员文章站 2022-07-03 09:50:07
...
面试中往往会问到JAVA 集合的适用,为了自己加强对集合的理解,在这里尽量详细的写写自己所知的集合的相关知识。
1、Collection 接口,此为最基本的集合接口,List/Set/Map均继承此接口。该接口提供了boolean add(Object obj)方法、remove()、clear()方法。

2、对于堆栈、队列操作,一般可以使用List集合,LinkedList/arrayList/Vector均继承List集合,其特点在于可以重复数据插入,均可以保存null的数据。LinkedList适用于快速的大量数据的插入、删除,另外其提供了get、insert等方法可以操作集合首部和尾端;arrayList适用于快速随机访问数据。Vector是线程同步的,平时比较少用;

3、Set集合,不接受相同数据的传入,(e1).equals(e2) == false;原因:构造器有约束;

4、Map<key,value>的使用,hashtable/hashMap均继承自Map;对于hashTabel,是线程同步的,只接受非空数据的保存,且数据不能重复。原因:key的生成会生成自己对应的hashCode与equals,若数据重复,则会导致相同的hashCode生成,导致冲突,哈希表开销操作增大。 对于hashMap能够接受null的数据保存,但是他是不同步的。


实际使用中的建议:
a、对于堆栈、队列的操作,优先使用List;
b、对于方法的返回,最好是直接返回List而非返回arrayList,这样方便维护时若使用linkedList时只需要抽象业务代码。

对于以上内容如有错误理解,烦请指正,谢谢。
相关标签: java