# Java `List`接口

> 原文： [https://www.programiz.com/java-programming/list](https://www.programiz.com/java-programming/list)

#### 在本教程中，我们将学习 Java 中的`List`接口及其方法。

在 Java 中，`List`接口是一个有序的集合，它使我们能够顺序存储和访问元素。 它扩展了`Collection`接口。

* * *

## 实现列表的类

由于`List`是一个接口，因此我们无法从中创建对象。

为了使用`List`接口的功能，我们可以使用以下类：

*   [ArrayList](/java-programming/arraylist "Java ArrayList class")
*   [链表](/java-programming/linkedlist "Java LinkedList class")
*   [`Vector`](/java-programming/vector "Java Vector class")
*   [栈](/java-programming/stack "Java Stack class")

![Classes implementing the List interface in Java](img/8ff434419e2a1dfaa4109a10cdbc00c8.png "Java List interface")

这些类在集合框架中定义，并实现`List`接口。

* * *

## 如何使用列表？

在 Java 中，必须导入`java.util.List`包才能使用`List`。

```java
// ArrayList implementation of List
List<String> list1 = new ArrayList<>();

// LinkedList implementation of List
List<String> list2 = new LinkedList<>(); 
```

在这里，我们创建了`ArrayList`和`LinkedList`类的对象`list1`和`list2`。 这些对象可以使用`List`接口的功能。

* * *

## 列表方法

`List`接口包含`Collection`接口的所有方法。 这是因为`Collection`是`List`的超级接口。

`List`接口中还提供了`Collection`接口的一些常用方法：

*   `add()` - 将元素添加到列表
*   `addAll()` - 将一个列表的所有元素添加到另一个
*   `get()` - 帮助从列表中随机访问元素
*   `iterator()` - 返回可用于顺序访问列表元素的迭代器对象
*   `set()` - 更改列表元素
*   `remove()` - 从列表中删除一个元素
*   `removeAll()` - 从列表中删除所有元素
*   `clear()` - 从列表中删除所有元素（比`removeAll()`更有效）
*   `size()` - 返回列表的长度
*   `toArray()` - 将列表转换为数组
*   `contains()` - 如果列表包含指定的元素，则返回`true`

* * *

## `List`接口的实现

**1.`ArrayList`实现类**

```java
import java.util.List;
import java.util.ArrayList;

class Main {

    public static void main(String[] args) {
        // Creating list using the ArrayList class
        List<Integer> numbers = new ArrayList<>();

        // Add elements to the list
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("List: " + numbers);

        // Access element from the list
        int number = numbers.get(2);
        System.out.println("Accessed Element: " + number);

        // Remove element from the list
        int removedNumber = numbers.remove(1);
        System.out.println("Removed Element: " + removedNumber);
    }
} 
```

**输出**

```java
List: [1, 2, 3]
Accessed Element: 3
Removed Element: 2 
```

要了解有关`ArrayList`的更多信息，请访问 [Java ArrayList](https://www.programiz.com/java-programming/arraylist) 。

**2.`LinkedList`实现类**

```java
import java.util.List;
import java.util.LinkedList;

class Main {

    public static void main(String[] args) {
        // Creating list using the LinkedList class
        List<Integer> numbers = new LinkedList<>();

        // Add elements to the list
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("List: " + numbers);

        // Access element from the list
        int number = numbers.get(2);
        System.out.println("Accessed Element: " + number);

        // Using the indexOf() method
        int index = numbers.indexOf(2);
        System.out.println("Position of 3 is " + index);

        // Remove element from the list
        int removedNumber = numbers.remove(1);
        System.out.println("Removed Element: " + removedNumber);
    }
} 
```

**输出**：

```java
List: [1, 2, 3]
Accessed Element: 3
Position of 3 is 1
Removed Element: 2 
```

要了解有关`LinkedList`的更多信息，请访问 [Java LinkedList](https://www.programiz.com/java-programming/linkedlist) 。

* * *

## Java 列表与集合

`List`接口和`Set`接口都继承`Collection`接口。 但是，它们之间存在一些差异。

*   列表可以包含重复的元素。 但是，集合不能有重复的元素。
*   列表中的元素以某种顺序存储。 但是，集合中的元素像数学中的集合一样按组存储。

既然我们知道了`List`是什么，我们将在下一个教程中详细了解`ArrayList`和`LinkedList`类中的实现。