java面试题网

普通会员

162

帖子

12

回复

171

积分

楼主
发表于 2018-05-25 15:11:22 | 查看: 5331| 回复: 2

List 和 Set 的区别

1.List和Set都是接口继承于Collection接口。

2.最大的不同就是List是可以重复的。而Set是不能重复的。(注意:元素虽然无放入顺序,但是元素在set 中的位置是有该元素的HashCode决定的,其位置其实是固定的) 

3.List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet

4.List适合经常追加数据,插入,删除数据。但随机取数效率比较低。

5.Set适合经常地随机储存,插入,删除。但是在遍历时效率比较低。



文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/454_1_1.html


java面试题交流群:327440556

普通会员

0

帖子

1

回复

3

积分
沙发
发表于 2019-02-24 16:43:03
第四条和第五条说的有问题吧

普通会员

115

帖子

83

回复

169

积分
板凳
发表于 2019-09-26 15:10:09

List和Map、Set的区别
结构特点
List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合;List 中存储的数据是有顺序,并
且允许重复;Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的,Set 中存储的数据是无
序的,且不允许有重复,但元素在集合中的位置由元素的hashcode决定,位置是固定的(Set集合根据hashcode来
进行数据的存储,所以位置是固定的,但是位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的);
实现类
List接口有三个实现类(LinkedList:基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还
存储下一个元素的地址。链表增删快,查找慢;ArrayList:基于数组实现,非线程安全的,效率高,便于索引,但不
感恩于心,回报于行。
便于插入删除;Vector:基于数组实现,线程安全的,效率低)。
Map 接口有三个实现类(HashMap:基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null
键;HashTable:线程安全,低效,不支持null值和null键;LinkedHashMap:是 HashMap的一个子类,保存了
记录的插入顺序;SortMap接口:TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序)。
Set 接口有两个实现类(HashSet:底层是由 HashMap 实现,不允许集合中有重复的值,使用该方式时需要重
写 equals()和 hashCode()方法;LinkedHashSet:继承与 HashSet,同时又基于 LinkedHashMap 来进行实现,底
层使用的是LinkedHashMp)。
区别
List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,例如通过
list.get(i)方法来获取集合中的元素;Map中的每一个元素包含一个键和一个值,成对出现,键对象不可以重复,值对
象可以重复;Set集合中的对象不按照特定的方式排序,并且没有重复对象,但它的实现类能对集合中的对象按照特定
的方式排序,例如TreeSet类,可以按照默认顺序,也可以通过实现Java.util.Comparator<Type>接口来自定义排序
方式。

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018