当前位置:首页 > 技术 >

list和set最大的区别(listsetmap三者的区别)

来源:原点资讯(www.yd166.com)时间:2022-10-25 04:54:19作者:YD166手机阅读>>

list和set的区别:

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

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

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

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

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

Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.

总结:List有顺序有重复没有排序,set无重复有排序,map的key也和set一样。如果想跟List一样需要有插入元素的顺序,请使用LinkedHashSet或者LinkedHashMap。

List的功能方法

实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。

List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。

ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。

LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替。)还具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。

For example:

ArrayList与迭代器的使用

List<Integer> list = new ArrayList<>();

for (int i = 0; i < 10; i ) {

list.add(i);

}

Iterator<Integer> iterator = list.iterator();

while (iterator.hasNext()) {

int i = iterator.next();

System.out.println("iterator==" i);

}

for(Integer i: list) {

System.out.println("i==" i);

}

ListIterator<Integer> listIterator = list.listIterator();

while (listIterator.hasNext()) {

int j = listIterator.next();

System.err.println("listIterator==" j);

}

Set的功能方法

Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。

TreeSet : 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

栏目热文

list和set哪个是有序的(set集合为什么是无序不重复的)

list和set哪个是有序的(set集合为什么是无序不重复的)

今天说一说集合,在面试的时候出现的频率非常高,开发中使用的频率也非常高。经常听到有人说List是有序,Set是无序,那么...

2022-10-25 05:07:13查看全文 >>

list集合跟set集合的区别(set)

list集合跟set集合的区别(set)

推荐阅读一、特性两个接口都是继承自Collection,是常用来存放数据项的集合,主要区别如下:List和Set之间很重...

2022-10-25 04:37:56查看全文 >>

set和list哪个效率高(set集合为什么是无序不重复的)

set和list哪个效率高(set集合为什么是无序不重复的)

集合类是Java开发最常用的工具,也是面试经常会问到的问题。Java提供了高性能的集合框架,主要包括两种容器类型:一种是...

2022-10-25 04:47:01查看全文 >>

listsetmap区别(list map set 有什么特点)

listsetmap区别(list map set 有什么特点)

一、结构特点1、List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;2、List中存储的数据是...

2022-10-25 05:06:45查看全文 >>

list和set的操作方法(list和set的集合特点)

list和set的操作方法(list和set的集合特点)

大家好,我是吉森。今天的菜品是这样的:List、Set、数组、Map这些常用的数据结构之间怎么相互转换?下面,让我们一起...

2022-10-25 05:06:07查看全文 >>

listset和map的区别(listsetmap集合的特点)

listset和map的区别(listsetmap集合的特点)

引言:Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中Java集合框架(常用接口)...

2022-10-25 05:13:15查看全文 >>

list 和set的共同点(list的set方法)

list 和set的共同点(list的set方法)

list与set的共同点:都是继承collection接口不同点:1、list元素是有顺序放入的,里面的元素是可以重复的...

2022-10-25 04:58:24查看全文 >>

东北最干净的城市排名(未来5年东北最吃香城市)

东北最干净的城市排名(未来5年东北最吃香城市)

有关哪里宜居的话题,一千个人眼里有一千个哈姆雷特,有的人喜欢温暖常青的南方,有的人则偏爱四季分明的东北。我们就拿中国北方...

2022-10-25 04:45:53查看全文 >>

东北环境最好的城市(东北最适合居住的城市排行)

东北环境最好的城市(东北最适合居住的城市排行)

在我国有着一个与朝鲜隔江相望的城市,站在江边,就可以眺望远处异国的景象。这里的风景十分优美,气候宜人。它更是人们评价为北...

2022-10-25 04:40:19查看全文 >>

东北最值得去的城市排名(东北十大魅力城市排名)

东北最值得去的城市排名(东北十大魅力城市排名)

北京冬奥会虽已闭幕数日,但“3亿人参与冰雪运动”的热忱却有增无减。今年以来,抖音中“滑雪”话题视频播放量达197.8亿次...

2022-10-25 05:13:33查看全文 >>

文档排行