Java列表接口

列表接口是Collection的子接口。它包含用于插入和删除元素的基于索引的方法。它是ListIterator接口的工厂。
列表接口声明

public interface List< E> extends Collection< E>

Java List接口的方法
方法 描述
void add(int index, E element) 用于将指定的元素插入列表中的指定位置。
boolean add(E e) 它用于将指定的元素追加到列表的末尾。
布尔addAll(Collection < ?扩展E> c) 它用于将指定集合中的所有元素附加到列表的末尾。
布尔addAll(int索引, Collection < ?扩展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[] toArray(T[] a) 它用于以正确的顺序返回包含此列表中所有元素的数组。
boolean contains(Object o) 如果列表包含指定的元素, 则返回true
布尔containsAll(Collection < ?> c) 如果列表包含所有指定的元素, 则返回true
int indexOf(Object o) 它用于返回指定元素首次出现在此列表中的索引, 如果列表不包含此元素, 则返回-1。
E remove(int index) 它用于删除列表中指定位置上存在的元素。
boolean remove(Object o) 它用于删除指定元素的第一次出现。
布尔值removeAll(Collection < ?> c) 它用于从列表中删除所有元素。
void replaceAll(UnaryOperator operator) 它用于将列表中的所有元素替换为指定的元素。
void keepAll(Collection < ?> c) 它用于保留列表中指定集合中存在的所有元素。
E set(int index, E element) 它用于替换列表中位于指定位置的指定元素。
无效排序(Comparator < ?super E> c) 用于根据指定的比较器对列表中的元素进行排序。
Spliterator spliterator() 它用于在列表中的元素上创建分隔符。
List < E> subList(int fromIndex, int toIndex) 它用于获取位于给定范围内的所有元素。
int size() 它用于返回列表中存在的元素数。
Java列表示例
import java.util.*; public class ListExample{ 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"); System.out.println("An element at 2nd position: "+al.get(2)); for(String s:al){ System.out.println(s); } } }

【Java列表接口】输出:
An element at 2nd position: Vijay Amit Sachin Vijay Kumar

Java ListIterator接口ListIterator接口用于在后退和前进方向上遍历元素。
ListIterator接口声明
public interface ListIterator< E> extends Iterator< E>

Java ListIterator接口的方法:
方法 描述
void add(E e) 此方法将指定的元素插入列表。
boolean hasNext() 如果列表迭代器在向前遍历列表时有更多元素, 则此方法返回true。
E next() 此方法返回列表中的下一个元素并前进光标位置。
int nextIndex() This method returns the index of the element that would be returned by a subsequent call to next()
boolean hasPrevious() 如果此列表迭代器在反向遍历列表时具有更多元素, 则此方法返回true。
E previous() 此方法返回列表中的前一个元素, 并将光标位置向后移动。
E previousIndex() 此方法返回元素的索引, 该元素的索引将由后续对previous()的调用返回。
void remove() 此方法从next()或previous()方法返回的列表中删除最后一个元素
void set(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

ListIterator接口示例:书籍
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 ListIteratorExample2 { public static void main(String[] args) { //Creating list of Books List< Book> list=new ArrayList< Book> (); //Creating Books Book b1=new Book(101, "Let us C", "Yashwant Kanetkar", "BPB", 8); Book b2=new Book(102, "Data Communications & Networking", "Forouzan", "Mc Graw Hill", 4); Book b3=new Book(103, "Operating System", "Galvin", "Wiley", 6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list 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 & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6

    推荐阅读