一、List接口:
List作为Collection接口的子接口,可以使用Collection接口中的全部方法,而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。
其方法简单来说如下:
注:以上方法是List集合里增加的一些根据索引来操作集合元素的方法,还有一些别的方法没有放到这里,具体还需查看API文档。
对于List需要注意的几个点:
- List判断两个对象相等只要通过equals()方法比较返回true即可。
- List集合可以根据位置索引来访问集合中的元素,所以List增加了一种新的遍历集合元素的方法:使用普通的for循环来遍历集合元素。
- 对于两个默认的方法:sort()和replaceAll()方法。,可以分别使用Lambda表达式指定的排序规则(:字符串长度越长,字符串越大;)和Lambda表达式指定了替换集合元素的规则(:直接用集合元素(字符串)的长度作为新的集合元素)。
二、ListIterator接口:
List提供一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法。
如下:
package java.util;
public interface ListIterator<E> extends Iterator<E> {
// Query Operations
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
// Modification Operations
void remove();
void set(E e);
void add(E e);
}
ListIterator是一个更加强大的Iterator子接口,它只能用于各种List接口的子类访问。因为ListIterator没有实现类,只有List接口中有一个返回值类型为ListIterator的listIterator()方法。而AbstractList作为List的直接子类,实现了listIterator()方法。
三、Iterator接口和ListIterator接口的主要区别
ListIterator与普通的Iterator进行对比,不难发现:
- ListIterator集合增加了向前迭代的功能(Iterator只能向后迭代)
- ListIterator还可以通过add()方法向List集合中添加元素(Iterator只能删除元素)。
- ListIterator可以使用set()方法替换他访问过的最后一个元素。但是Iterator只能遍历集合,不能修改集合
- 示例代码:
public class ListIteratorTest{
public static void main(String[] args) {
String[] books = {
"疯狂java讲义", "疯狂ios讲义", "轻量级java EE企业应用实战"};
List bookList = new ArrayList();
for(int i = 0; i < books.length; i++) {
booksList.add(books[i]);
}
ListIterator lit = bookList.listIterator();
while(lit.hasNext()) {
System.out.println(lit.next());
lit.add("-----分隔符-----");
}
System.out.println("=====下面开始反向迭代=====");
while(lit.hasPrevious()) {
System.out.println(lit.previous());
}
}
}
运行结果如下:
疯狂java讲义
疯狂ios讲义
轻量级java EE企业应用实战
=====下面开始反向迭代=====
-----分隔符-----
轻量级java EE企业应用实战
-----分隔符-----
疯狂ios讲义
-----分隔符-----
疯狂java讲义
参考:
感谢:https://blog.csdn.net/xiaojie_570/article/details/79291406