Java教程

Java List

List提供了维护有序集合的功能。它包含用于插入,更新,删除和搜索元素的基于索引的方法。它也可以有重复的元素。我们还可以将null元素存储在列表中。
List接口位于 java.util 包中,并继承了Collection接口。它是ListIterator接口的工厂。通过ListIterator,我们可以在向前和向后的方向上迭代列表。 List接口的实现类是 ArrayList LinkedList ,Stack和Vector。 ArrayList和LinkedList在Java编程中被广泛使用。从Java 5开始不推荐使用Vector类。

列表接口声明

public interface List<E> extends Collection<E>

Java列表方法

方法 说明
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>运算符) 用于将列表中的所有元素替换为指定的元素。
void keepAll(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与ArrayList

List是一个接口,而ArrayList是List的实现类。

如何创建列表

ArrayList和LinkedList类提供List接口的实现。让我们看一下创建列表的示例:
ArrayListList<String> list=new ArrayList<String>();
ArrayListList<Integer> list=new ArrayList<Integer>();
ArrayListList<Book> list=new ArrayList<Book>();
LinkedListList<String> list=new LinkedList<String>();
简而言之,您可以创建任何类型的列表。 ArrayList <T>和LinkedList <T>类用于指定类型。在这里,T表示类型。

Java列表示例

我们来看一个简单的List示例,其中我们使用ArrayList类作为实现。
import java.util.*;
public class ListExample1{
    public static void main(String args[]){
        List<String> list=new ArrayList<String>();
        list.add("Mango");
        list.add("Apple");
        list.add("Banana");
        list.add("Grapes");
        for(String fruit:list) System.out.println(fruit);
    }
}
输出:
Mango
Apple
Banana
Grapes

如何将数组转换为列表

我们可以通过遍历数组并使用list.add()方法将元素逐一添加到列表中,从而将数组转换为列表。让我们看一个将数组元素转换为List的简单示例。
import java.util.*;
public class ArrayToListExample{
    public static void main(String args[]){
        String[] array={
        "Java","Python","PHP","C++"}
        ;
        System.out.println("Printing Array: "+Arrays.toString(array));
        ListList<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");
        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()方法更改或替换元素。
import java.util.*;
public class ListExample2{
    public static void main(String args[]){
        List<
        String>
        list=new ArrayList<
        String>
        ();
        list.add("Mango");
        list.add("Apple");
        list.add("Banana");
        list.add("Grapes");
        System.out.println("Returning element: "+list.get(1));
        //it will return the 2nd element, because index starts from 0
        list.set(1,"Dates");
        for(String fruit:list) System.out.println(fruit);
    }
}
输出:
Returning element: Apple
Mango
Dates
Banana
Grapes

如何对列表进行排序

对列表进行排序有多种方法,这里我们将使用Collections.sort()方法对列表元素进行排序。 java.util 包提供了一个实用程序类 Collections ,该类具有静态方法sort()。使用 Collections.sort()方法,我们可以轻松地对任何列表进行排序。
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...");
        List<Integer> list2=new ArrayList<Integer>();
        list2.add(21);
        list2.add(11);
        list2.add(51);
        list2.add(1);
        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 ListIterator接口

ListIterator接口用于沿前后方向遍历元素。

ListIterator接口声明

public interface ListIterator<E> extends Iterator<E>

Java ListIterator接口的方法:

方法 说明
void add(E e) 此方法将指定的元素插入列表。
boolean hasNext() 如果列表迭代器在向前遍历列表时有更多元素,则此方法返回true。
E next() 此方法返回列表中的下一个元素并前进光标位置。
int nextIndex() 此方法返回元素的索引,该元素的索引将由后续对next()的调用返回
boolean hasPrevious() 如果此列表迭代器在反向遍历列表时有更多元素,则此方法返回true。
E previous() 此方法返回列表中的前一个元素,并将光标位置向后移动。
E previousIndex() 此方法返回元素的索引,该元素的索引将由后续对previous()的调用返回。
void remove() 此方法从next()或previous()方法返回的列表中删除最后一个元素
无效集(E e) 此方法用指定的元素替换next()或previous()方法返回的最后一个元素。

ListIterator接口示例

import java.util.*;
public class ListIteratorExample1{
    public static void main(String args[]){
        List<String> al=new ArrayList<String>();
        al.add("Amit");
        al.add("Vijay");
        al.add("Kumar");
        al.add(1,"Sachin");
        ListIterator<String> itr=al.listIterator();
        System.out.println("Traversing elements in forward direction");
        while(itr.hasNext()){
            System.out.println("index:"+itr.nextIndex()+" value:"+itr.next());
        }
        System.out.println("Traversing elements in backward direction");
        while(itr.hasPrevious()){
            System.out.println("index:"+itr.previousIndex()+" value:"+itr.previous());
        }
    }
}
输出:
Traversing elements in forward direction
index:0 value:Amit
index:1 value:Sachin
index:2 value:Vijay
index:3 value:Kumar
Traversing elements in backward direction
index:3 value:Kumar
index:2 value:Vijay
index:1 value:Sachin
index:0 value:Amit

列表示例: 书

让我们看一下添加书的列表示例。
import java.util.*;
class Book {
    int id;
    String name,author,publisher;
    int quantity;
    public Book(int id, String name, String author, String publisher, int quantity) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.publisher = publisher;
        this.quantity = quantity;
    }
}
public class ListExample5 {
    public static void main(String[] args) {
        List<Book> list=new ArrayList<Book>();
        Book b1=new Book(101,"Let us C","Yashwant Kanetkar","BPB",8);
        Book b2=new Book(102,"Data Communications and Networking","Forouzan","Mc Graw Hill",4);
        Book b3=new Book(103,"Operating System","Galvin","Wiley",6);
        list.add(b1);
        list.add(b2);
        list.add(b3);
        for(Book b:list){
            System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);
        }
    }
}
输出:
101 Let us C Yashwant Kanetkar BPB 8
102 Data Communications and Networking Forouzan Mc Graw Hill 4
103 Operating System Galvin Wiley 6

相关主题

Java中的数组列表 Java中的LinkedList ArrayList与LinkedList之间的区别 Array与ArrayList之间的差异 何时在Java中使用ArrayList和LinkedList ArrayList和Vector之间的区别 如何在Java中比较两个ArrayList 如何在Java中反转ArrayList 何时在Java中使用ArrayList和LinkedList 如何使ArrayList只读 如何在Java中同步ArrayList 如何在Java中将ArrayList转换为Array以及如何将数组转换为ArrayList Java中的Array vs ArrayList 如何按降序对Java ArrayList进行排序 如何从Java中的ArrayList中删除重复项
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4