目录
1. 什么是List
在集合框架中,
List
是一个接口,继承自
Collection
。
Collection
也是一个接口
,该接口中规范了后序容器中常用的一些方法,具体如下所示:
站在数据结构的角度来看,
List
就是一个线性表,即
n
个具有相同类型元素的有限序列,在该序列上可以执行增删
改查以及变量等操作
。
Collection中有那些方法?
-
add(E e)
方法 -
(在
Set
等集合中) -
- 用于向集合中添加单个元素。如果是
Set
集合,会保证元素的唯一性,例如:
- 用于向集合中添加单个元素。如果是
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
System.out.println(set);
}
}
-
addAll
(Collection<? extends E> c)
方法 -
(在
Collection
接口相关实现类中,如List
、Set
等)- 用于将一个集合中的所有元素添加到当前集合中。例如:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
list1.addAll(list2);
System.out.println(list1);
}
}
-
clear()
方法 - (在
Collection
接口相关实现类中)- 用于清空集合中的所有元素,例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.clear();
System.out.println(list);
}
}
-
contains(Object o)
方法 - (在
Collection
接口相关实现类中)- 用于判断集合中是否包含指定的元素,例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
boolean contains = list.contains("apple");
System.out.println(contains);
}
}
-
containsAll(Collection<?> c)
方法 - (在
Collection
接口相关实现类中)- 用于判断当前集合是否包含另一个集合中的所有元素,例如:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(1, 2));
boolean containsAll = list1.containsAll(list2);
System.out.println(containsAll);
}
}
-
equals(Object o)
方法 - (在
Collection
接口相关实现类中)- 用于比较两个集合是否相等,这里的相等是指元素内容相等(对于
Set
还要求元素顺序无关)。例如:
- 用于比较两个集合是否相等,这里的相等是指元素内容相等(对于
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(1, 2, 3));
boolean equals = list1.equals(list2);
System.out.println(equals);
}
}
-
hashCode()
方法 - (在
Collection
接口相关实现类中)- 返回集合的哈希码值,哈希码值的计算与集合中的元素相关,不同的集合实现可能有不同的计算方式。
-
import java.util.ArrayList; import java.util.List; public class ListHashCodeExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); int hashCode = list.hashCode(); System.out.println("List的哈希码值: " + hashCode); } }
-
isEmpty()
方法 - (在
Collection
接口相关实现类中)- 用于判断集合是否为空,例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
boolean isEmpty = list.isEmpty();
System.out.println(isEmpty);
}
}
-
iterator()
方法 - (在
Collection
接口相关实现类中)- 返回一个
Iterator
对象,用于遍历集合中的元素,例如:
- 返回一个
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
}
}
-
remove(Object o)
方法 - (在
Collection
接口相关实现类中)- 用于从集合中移除指定的元素,例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.remove("apple");
System.out.println(list);
}
}
-
removeAll(Collection<?> c)
方法 - (在
Collection
接口相关实现类中)- 用于从当前集合中移除另一个集合中的所有元素,例如:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4));
list1.removeAll(list2);
System.out.println(list1);
}
}
-
retainAll(Collection<?> c)
方法 - (在
Collection
接口相关实现类中)- 用于保留当前集合中与另一个集合的交集部分的元素,例如:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 6));
list1.retainAll(list2);
System.out.println(list1);
}
}
-
size()
方法 - (在
Collection
接口相关实现类中)- 用于返回集合中元素的个数,例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
int size = list.size();
System.out.println(size);
}
}
-
toArray()
方法 - (在
Collection
接口相关实现类中)- 用于将集合转换为数组,例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
Object[] array = list.toArray();
for (Object element : array) {
System.out.println(element);
}
}
}
-
toArray(T[] a)
方法 - (在
Collection
接口相关实现类中)- 与
toArray()
类似,但可以指定数组的类型,这样可以避免不必要的类型转换。例如:
- 与
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
String[] array = list.toArray(new String[0]);
for (String element : array) {
System.out.println(element);
}
}
}
此片为简单的介绍List,具体使用方法请看下篇ArrayList与顺序表