Java教程-Java 列表

Java 列表
Java 中的 List 提供了维护有序集合的功能。它包含基于索引的方法来插入、更新、删除和搜索元素。它还可以包含重复的元素。我们还可以在列表中存储空元素。
List 接口位于 java.util 包中并继承了 Collection 接口。它是 ListIterator 接口的工厂。通过 ListIterator,我们可以在列表中向前和向后迭代。List 接口的实现类有 ArrayList、LinkedList、Stack 和 Vector。ArrayList 和 LinkedList 在 Java 编程中被广泛使用。Vector 类自 Java 5 起就已被弃用。
List 接口声明
- public interface List<E> extends Collection<E>
Java List 方法
方法 | 描述 | |
---|---|---|
void add(int index, E element) | 用于在列表的指定位置插入指定的元素。 | |
boolean add(E e) | 用于将指定的元素追加到列表的末尾。 | |
boolean addAll(Collection<? extends E> c) | 用于将指定集合中的所有元素追加到列表的末尾。 | |
boolean addAll(int index, Collection<? extends E> c) | 用于将指定集合中的所有元素,从列表的指定位置开始,追加到列表中。 | |
void clear() | 用于从列表中删除所有元素。 | |
boolean equals(Object o) | 用于将指定对象与列表的元素进行比较。 | |
int hashcode() | 用于返回列表的哈希码值。 | |
E get(int index) | 用于从列表的特定位置获取元素。 | |
boolean isEmpty() | 如果列表为空,则返回true,否则返回false。 | |
int lastIndexOf(Object o) | 用于返回列表中指定元素的最后一个出现的索引,如果列表不包含该元素,则返回-1。 | |
Object[] toArray() | 用于以正确的顺序返回包含列表中所有元素的数组。 | |
<T> T[] toArray(T[] a) | 用于以正确的顺序返回包含列表中所有元素的数组。 | |
boolean contains(Object o) | 如果列表包含指定元素,则返回true。 | |
boolean containsAll(Collection<?> c) | 如果列表包含指定集合的所有元素,则返回true。 | |
int indexOf(Object o) | 用于返回列表中指定元素的第一个出现的索引,如果列表不包含该元素,则返回-1。 | |
E remove(int index) | 用于从列表中删除指定位置的元素。 | |
boolean remove(Object o) | 用于删除列表中第一个出现的指定元素。 | |
boolean removeAll(Collection<?> c) | 用于从列表中删除所有元素。 | |
void replaceAll(UnaryOperator<E> operator) | 用指定的元素替换列表中的所有元素。 | |
void retainAll(Collection<?> c) | 用于保留列表中存在于指定集合中的所有元素。 | |
E set(int index, E element) | 用指定的元素替换列表中指定位置的元素。 | |
void sort(Comparator<? super E> c) | 用指定比较器基于列表的元素对列表进行排序。 | |
Spliterator<E> spliterator() | 用于在列表的元素上创建分割迭代器。 | |
List<E> subList(int fromIndex, int toIndex) | 用于获取列表中指定范围内的所有元素。 | |
int size() | 用于返回列表中的元素数。 |
Java List vs ArrayList
List 是一个接口,而 ArrayList 是 List 的实现类。
如何创建 List
ArrayList 和 LinkedList 类提供了 List 接口的实现。让我们看一些创建 List 的示例:
mathematicaCopy code
1. //使用 ArrayList 创建 String 类型的 List
2. List<String> list=**new** ArrayList<String>();
3.
4. //使用 ArrayList 创建 Integer 类型的 List
5. List<Integer> list=**new** ArrayList<Integer>();
6.
7. //使用 ArrayList 创建 Book 类型的 List
8. List<Book> list=**new** ArrayList<Book>();
9.
10. //使用 LinkedList 创建 String 类型的 List
11. List<String> list=**new** LinkedList<String>();
简而言之,您可以创建任何类型的 List。ArrayList<T> 和 LinkedList<T> 类用于指定类型。这里,T 表示类型。
Java List 示例
让我们看一个简单的 List 示例,其中我们使用 ArrayList 类作为实现。
import java.util.*;
public class ListExample1 {
public static void main(String args[]) {
// Creating a List
List<String> list = new ArrayList<String>();
// Adding elements in the List
list.add("Mango");
list.add("Apple");
list.add("Banana");
list.add("Grapes");
// Iterating the List element using for-each loop
for (String fruit : list)
System.out.println(fruit);
}
}
Output:
Mango
Apple
Banana
Grapes
如何将数组转换为列表
我们可以通过遍历数组,并使用list.add()
方法逐个将元素添加到列表中来将数组转换为列表。让我们看一个简单的示例,将数组元素转换为列表。
import java.util.*;
public class ArrayToListExample {
public static void main(String args[]) {
// Creating Array
String[] array = {"Java", "Python", "PHP", "C++"};
System.out.println("Printing Array: " + Arrays.toString(array));
// Converting Array to List
List<String> list = new ArrayList<String>();
for (String lang : array) {
list.add(lang);
}
System.out.println("Printing List: " + list);
}
}
输出:
Printing Array: [Java, Python, PHP, C++]
Printing List: [Java, Python, PHP, C++]
如何将列表转换为数组
我们可以调用list.toArray()
方法将列表转换为数组。让我们看一个简单的示例,将列表元素转换为数组。
import java.util.*;
public class ListToArrayExample {
public static void main(String args[]) {
List<String> fruitList = new ArrayList<>();
fruitList.add("Mango");
fruitList.add("Banana");
fruitList.add("Apple");
fruitList.add("Strawberry");
// Converting ArrayList to Array
String[] array = fruitList.toArray(new String[fruitList.size()]);
System.out.println("Printing Array: " + Arrays.toString(array));
System.out.println("Printing List: " + fruitList);
}
}
输出:
Printing Array: [Mango, Banana, Apple, Strawberry]
Printing List: [Mango, Banana, Apple, Strawberry]
获取和设置列表中的元素
get()
方法返回给定索引处的元素,而set()
方法更改或替换元素。
javaCopy code
import java.util.*;
public class ListExample2 {
public static void main(String args[]) {
// Creating a List
List<String> list = new ArrayList<String>();
// Adding elements in the List
list.add("Mango");
list.add("Apple");
list.add("Banana");
list.add("Grapes");
// Accessing the element
System.out.println("Returning element: " + list.get(1)); // it will return the 2nd element, because index starts from 0
// Changing the element
list.set(1, "Dates");
// Iterating the List element using for-each loop
for (String fruit : list)
System.out.println(fruit);
}
}
输出:
Returning element: Apple
Mango
Dates
Banana
Grapes
如何对列表进行排序
有多种方法可以对列表进行排序,在这里我们将使用Collections.sort()
方法对列表元素进行排序。java.util
包提供了一个实用类Collections
,其中包含静态方法sort()
。使用Collections.sort()
方法,We can easily sort any list.
import java.util.*;
class SortArrayList {
public static void main(String args[]) {
// Creating a list of fruits
List<String> list1 = new ArrayList<String>();
list1.add("Mango");
list1.add("Apple");
list1.add("Banana");
list1.add("Grapes");
// Sorting the list
Collections.sort(list1);
// Traversing list through the for-each loop
for (String fruit : list1)
System.out.println(fruit);
System.out.println("Sorting numbers...");
// Creating a list of numbers
List<Integer> list2 = new ArrayList<Integer>();
list2.add(21);
list2.add(11);
list2.add(51);
list2.add(1);
// Sorting the list
Collections.sort(list2);
// Traversing list through the for-each loop
for (Integer number : list2)
System.out.println(number);
}
}
输出:
Apple
Banana
Grapes
Mango
Sorting numbers...
1
11
21
51