List集合特点&常用方法

!!! note 目录

List集合特点&常用方法

一、List集合特点

1. 有序性

List 集合中的元素是有序的,按照插入顺序进行排序。这意味着每个元素都有一个固定的位置(索引),可以通过索引访问和操作元素。

2. 允许重复元素

List 集合允许存储重复的元素。这意味着一个 List 中可以有多个相同的对象。

3. 元素索引

List 集合中的每个元素都有一个索引,索引从 0 开始。可以通过索引快速访问、插入、删除和修改元素。

二、List接口下常见的实现类

  1. ArrayList:数组
  2. VectorStack:数组(线程安全)
  3. LinkedList:双向链表

三、List接口特有方法

修饰符和类型 方法 描述
void add(int index, E element) 将指定元素插入此列表的指定位置(可选操作)。
E set(int index, E element) 用指定元素替换此列表中指定位置的元素(可选操作)。
E remove(int index) 删除此列表中指定位置的元素(可选操作)。
int indexOf(Object o) 返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回 -1。
int lastIndexOf(Object o) 返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回 -1。
List<E> subList(int fromIndex, int toIndex) 返回此列表在指定的fromIndex(包括)和toIndex(不包括)之间的部分的子集合
E get(int index) 返回此列表中指定位置的元素。
static <E> List<E> of(E... elements) 返回包含任意数量元素的不可修改列表。

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package List;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTest {
private static List<String> list = new ArrayList<>();

/**
* 集合初始化
*/

static {
list.add("camellia");
list.add("xiaohua");
}

/**
* 遍历输出元素
*/
public void display(){
Iterator<String> it = list.iterator();
while (it.hasNext()) System.out.println(it.next());
}

/**
* 在指定位置添加元素
*/
@Test
public void testListAdd(){
list.add(1,"NICE");
display();
}

/**
* 修改索引处参数
*/
@Test
public void testListSet(){
list.set(1,"HAHA");
display();
}

/**
* 删除下标1处的元素
*/
@Test
public void testListRemove(){
list.remove(1);
display();
}

/**
* 返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回 -1。
*/
@Test
public void testListIndexOf(){
System.out.println(list.indexOf("camellia"));
}

/**
* 返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回 -1。
*/
@Test
public void testListLastIndexOf(){
System.out.println(list.lastIndexOf("xiaohua"));
}

/**
*返回此列表在指定的fromIndex(包括)和toIndex(不包括)之间的部分的子集合。
*/
@Test
public void testListSubList(){
System.out.println(list.subList(0, 2));
}

/**
* 对于List集合来说有特殊的遍历方法,这个方式只适合List集合家族
*/
@Test
public void testListGet(){
for (int i=0;i<list.size();i++)
System.out.println(list.get(i));
}

/**
* 获取一个只读的,不可修改的集合。
*/
@Test
public void testListOf(){
//获取一个只读的,不可修改的集合。
List<Integer> nums = List.of(1,2,3,4,5,6,7,8,9);
//尝试修改(出现异常)
// nums.set(1,66); //java.lang.UnsupportedOperationException
}
}