Collection单列集合
所有超级接口:
Iterable<E>
所有已知子接口:
BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>
一、List
所有已知实现类:
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector
java.util.List
接⼝继承⾃
Collection
接⼝,是单列集合的⼀个重要分⽀,习惯性地会将实现了 List
接⼝的对象称为
List
集合。在
List
集合中允许出现重复的元素,所有的元素是以⼀种线性⽅式进⾏存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List
集合还有⼀个特点就是元素有序,即元素的存⼊顺序和取出顺序⼀致。
1.特点
-
它是⼀个元素存取有序的集合。例如,存元素的顺序是 11 、 22 、 33 。那么集合中,元素的存储就是按照11 、 22 、 33 的顺序完成的)
-
集合中允许有null值
-
它是⼀个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是⼀个道理)
-
集合中可以有重复的元素,通过元素的 equals ⽅法,来⽐较是否为重复的元素。
2. 常用API
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)
:⽤指定元素替换集合中指定位置的元素
,
返回值的更新前的元素。
3.List接口的实现类
1.ArrayList
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于⽇常开发中使⽤最多的功能为查询数据、遍历数据,所以 ArrayList 是最常⽤的集合。
特点:
1.按照顺序排列,每个元素都带有标号;2.除了有标号是连续的,内存中的物理空间也是连续的。
底层使用的数据结构:顺序结构;
顺序结构底层实现:数组;
优缺点:查询快;增删慢,内存的物理空间是连续的,利用不到碎片空间。
import java.util.ArrayList;
// ArrayList是子接口List的实现类之一
public class ArrayListDemo01 {
public static void main(String[] args) {
ArrayList<Object> a = new ArrayList<Object>();
a.add(2);
a.add(23);
System.out.println(a);//[2, 23]
//1.向集合(this)中末尾添加元素
a.add(2,55);
System.out.println(a);//[2, 23, 55]
//2.向集合index的位置中插入obj元素
a.add(1,"哈哈");
System.out.println(a);//[2, 哈哈, 23, 55]
//3.删除指定位置(index)上的元素,并且返回删除的元素
//比如删除下标是2的元素
a.remove(2);
System.out.println(a);//[2, 哈哈, 55]
//4.删除第一个指定元素(obj)
a.remove(0);
System.out.println(a);//[哈哈, 55]
//5.替换指定位置上的元素,替换成obj,并且返回被替换的元素
a.set(1,"嘻嘻");
System.out.println(a);//[哈哈, 嘻嘻]
//6.从集合中获得指定位置(index)的元素
//比如下标是1位置上的元素
System.out.println(a.get(1));//嘻嘻
//