List和Set集合

一、Collection
- 定义
public interface Collection<E> extends Iterable<E>
java.util.Collection是进行单对象保存的最大父接口,即每次利用 Collection接口都只能保存一个对象信息。但是 Collection使用了泛型,这样可以保证集合中的数据类型统一。
- 常用方法
| 编号 | 方法名称 | 描述 |
|---|---|---|
| 1 | boolean add(E e); | 向集合添加数据 |
| 2 | boolean addAll(Collection<? extends E> c); | 追加一个集合 |
| 3 | void clear(); | 清空集合,根元素为null |
| 4 | boolean contains(Object o); | 判断是否包含指定的内容,需要equals()支持 |
| 5 | boolean isEmpty(); | 判断是否为空集合(不是null) |
| 6 | boolean remove(Object o); | 删除对象,需要equals()支持 |
| 7 | int size(); | 取得集合中保存的元素个数 |
| 8 | Object[] toArray(); | 将集合变为对象数组保存 |
| 9 | Iterator iterator(); | 为Iterator接口实例化(Iterator接口定义) |
注意:contains()与remove()两个方法的操作时,必须保证类中了已经成功的覆写了 Object类中的 equals()方法,否则将无法正常完成操作
Collection接口存在一个问题,无法区分保存的数据是否重复,所以在开发中往往会使用两个子接口:List和 Set子接口。List子接口保存的数据可以重复、是有顺序的 , Set去除重复元素,无序的,重复元素会覆盖掉 。
二、List
List的子类有 ArrayList、LinkList、Vector。但是 Vector不常用,就不在阐述。
List子接口中保存的数据是可以重复的,并且在 Collection子接口中,List这个子接口是使用最多的。对 Collection接口的功能进行了扩充。
- 扩充方法
| 编号 | 方法名称 | 描述 |
|---|---|---|
| 1 | E get(int index); | 根据索引获取数据 |
| 2 | E set(int index, E element); | 修改制定索引的数据 |
| 3 | ListIterator listIterator(int index); | 为ListIterator接口实例化 |
2.1、ArrayList和LinkList的区别
2.1.1、底层实现区别
-
ArrayList底层实现就是数组,且ArrayList实现了RandomAccess,表示它能快速随机访问存储的元素,通过下标index访问,只是我们需要用get()方法的形式, 数组支持随机访问, 查询速度快, 增删元素慢; -
LinkedList底层实现是链表,LinkedList没有实现RandomAccess接口,链表支持顺序访问, 查询速度慢, 增删元素快 -
ArrayList定义
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
LinkedList定义
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
注意:这个问题面试问到的几率十分高
2.1.2、应用场景不同
ArrayList应该在需要更多搜索操作的地方使用,并且LinkedList应该在需要更多插入和删除操作的地方使用。
三、Set
Set的常用的子类有 HashSet<E>、TreeSet<E>
HashSet是三列存放数据,TressSet是有序存放数据。在开发中,如果使用 TressSet子类,必须同时使用比较器的概念。HashSet子类相对于 TressSet子类容易一些,所以没有排序要求的,首先考虑 HashSet子类。
四、List和Set的区别
1、List中元素放入是有顺序的,可以重复。Set去除重复元素,无序的,重复元素会覆盖掉。
2、Set检索效率低,删除和插入效率高,插入和删除不会引起元素位置的改变;而List和数组类似,可以动态增长,查找效率高,插入和删除效率低,会引起元素位置的改变。
490

被折叠的 条评论
为什么被折叠?



