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中删除重复项