对于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时只需要抽象业务代码。
对于以上内容如有错误理解,烦请指正,谢谢。
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时只需要抽象业务代码。
对于以上内容如有错误理解,烦请指正,谢谢。
上一篇: DNS欺骗
推荐阅读
-
list,set,map,数组之间的相互转换详细解析
-
list,set,map,数组之间的相互转换详细解析
-
Python中内置数据类型list,tuple,dict,set的区别和用法
-
四种常见的数据结构、LinkedList、Set集合、Collection、Map总结
-
Python中内置数据类型list,tuple,dict,set的区别和用法
-
荐 Java语言基础之Collection接口、List集合、Set集合的基本使用
-
Collection中的Set与list 的一些实际应用
-
List,Set,Map遍历方式 (收集的资源,值得看一下)
-
由Java中的Set,List,Map引出的排序技巧
-
List、Map、Set的区别与联系