Java 列表

Java 中的 List 提供了维护有序集合的功能。它包含基于索引的方法来插入、更新、删除和搜索元素。它还可以包含重复的元素。我们还可以在列表中存储空元素。

List 接口位于 java.util 包中并继承了 Collection 接口。它是 ListIterator 接口的工厂。通过 ListIterator,我们可以在列表中向前和向后迭代。List 接口的实现类有 ArrayList、LinkedList、Stack 和 Vector。ArrayList 和 LinkedList 在 Java 编程中被广泛使用。Vector 类自 Java 5 起就已被弃用。

List 接口声明

  1. 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

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想