List与Set的介绍

本文介绍了Java集合框架中的List和Set接口的区别。List接口存储元素有序且允许重复,常用方法包括添加、获取和替换元素。ArrayList是数组结构,适合查询,LinkedList适合频繁的添加删除操作。Set接口则确保元素唯一且无序,HashSet基于哈希存储,TreeSet通过红黑树实现排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

联系:

List和Set是用来存放集合的接口,并且二者都继承自接口Collection。

区别:

List接口介绍

    List接口是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。检索效率较高,插入删除效率较低。ArrayList、LinkedList是List的两个实现类。

List借口的特点:

1、它是一个元素存取有序的集合,即元素的存入顺序和取出顺序一致。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的 。

2、它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。

3、集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。 

List接口中常用的方法:

List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法,如下:

  • public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。

  • public E get(int index):返回集合中指定位置的元素。

  • public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。

  • public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值是更新前的元素。

ArrayList:

    ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。

LinkedList:

    LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。 实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。

Set接口介绍

       Set接口同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。 与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。 检索效率较低,插入删除效率较高,由于set集合储存位置是由他的HashCode码决定的,所以他的存储对象必须有equals()方法,而且set遍历只能用迭代,没有下标。 HashSet、TreeSet是Set的两个实现类。

HashSet:

    HashSetSet接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致),可以有null,但是null只能有一个,不能有重复的元素。HashSet不是同步的,需要外部保持线程之间的同步问题。 。 HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。保证元素唯一性的方式依赖于:hashCodeequals方法。  

TreeSet:

        TreeSet实现了SortedSet接口,它是一个有序的集合类,TreeSet的底层是通过TreeMap实现的。TreeSet并不是根据插入的顺序来排序,而是根据实际的值的大小来排序。TreeSet也支持两种排序方式:自然排序和自定义排序。不能放入重复元素和null。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值