Appearance
1. ListIterator 概述
用于允许程序员沿任一方向遍历列表的列表的迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。 A ListIterator
没有电流元素; 其光标位置始终位于通过调用previous()
返回的元素和通过调用next()
返回的元素next()
。 长度为n
的列表的迭代器具有n+1
可能的光标位置
2. ListIterator 方法
方法名 | 说明 |
---|---|
E next() | 返回列表中的下一个元素 |
boolean hasNext() | 如果遍历正向列表,列表迭代器有多个元素,返回 true |
E previous() | 返回列表中的上一个元素 |
boolean hasPrevious() | 如果遍历反向列表,列表迭代器有多个元素, 返回 true |
void add( E e ) | 将指定的元素插入列表 |
2.1 方法使用
java
public static void main(String[] args) {
//创建集合对象
List<String> list = new ArrayList<String>();
//向集合中添加对象
list.add("Hello");
list.add("World");
list.add("Java");
//通过List集合的listIterator()方法得到
/*
ListIterator<String> sli = list.listIterator();
while (sli.hasNext()) {
String s = sli.next();
System.out.println(s); // 输出结果:Hello World Java
}
while (sli.hasPrevious()) {
String s = sli.previous();
System.out.println(s); //输出结果:Java World Hello
}
*/
//void add( E e ) 将指定的元素插入列表
//获取列表迭代器
ListIterator<String> li = list.listIterator();
while (li.hasNext()) {
String s = li.next();
if (s.equals("World")) {
li.add("Javaee");
}
}
System.out.println(list); //输出结果:[Hello, World, Javaee, Java]
}
3.增强 for 循环
实现此接口允许对象成为增强 for 语句的目标,内部原理是 Iterator
3.1 使用
java
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
for (int i : arr) {
System.out.print("\t" + i);// 1 2 3 4 5
}
String[] array = {"hello", "world", "java"};
for (String s : array) {
System.out.print("\t" + s);// hello world java
}
List<String> list = new ArrayList<String>();
list.add("Hello");
list.add("World");
list.add("Java");
for (String s : list) {
System.out.print("\t" + s);// Hello World Java
}
}
3.2 验证内部原理是 Iterator 迭代器
java
//验证内部原理是Iterator迭代器
for (String s:list){
if (s.equals("World")){
list.add("Javaee");//ConcurrentModificationException
}
}
4. list 集合子类的特点
ArrayList ,可调整大小的数组的实现List
接口。 实现所有可选列表操作,并允许所有元素,包括null
。 除了实现List 接口
之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。(数组:查询快,增删慢)
LinkedList,双链表实现了List
和Deque
接口。 实现所有可选列表操作,并允许所有元素(包括null
)。 (链表:查询慢,增删快)
5. 三种遍历集合方式
- 迭代器:集合特有的遍历方式
- 普通 for :带有索引的遍历方式
- 增强 for :最方便的遍历方式
6. LinkedList 集合的特有功能
6.1 方法说明
方法名 | 说明 |
---|---|
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表中的最后一个元素 |
public E removeFirst() | 从此列表中删除并返回第一个元素 |
public E removeLast() | 从此列表中删除并返回最后一个元素 |
6.2 方法使用
java
public static void main(String[] args) {
//创建LinkedList集合对象
LinkedList<String> linkedList = new LinkedList<String>();
//添加元素
linkedList.add("hello");
linkedList.add("world");
linkedList.add("java");
// public void addFirst(E e) 在该列表开头插入指定的元素
//linkedList.addFirst("ZJSJ"); // [ZJSJ, hello, world, java]
// public void addLast(E e) 将指定的元素追加到此列表的末尾
//linkedList.addLast("ZJSJ"); // [hello, world, java, ZJSJ]
// public E getFirst() 返回此列表中的第一个元素
//String first = linkedList.getFirst();
//System.out.println(first); // hello
// public E getLast() 返回此列表中的最后一个元素
// String last = linkedList.getLast();
//System.out.println(last); // java
// public E removeFirst() 从此列表中删除并返回第一个元素
//linkedList.removeFirst(); // [world, java]
// public E removeLast() 从此列表中删除并返回最后一个元素
linkedList.removeLast(); // [hello, world]
//输出集合
System.out.println(linkedList);
}