Iterator提供了对集合迭代的方法,每个集合都可以返回一个Iterator实例,迭代器可以在迭代的过程中删除集合的底层元素,但是不能直接调用集合的remove()方法移除,可以使用Iterator中的remove()方法进行移除。
2.在Iterator接口中定义了三个方法:
- hasNext() 如果有元素则继续迭代,返回true
- next() 返回迭代的元素
- remove() 移除返回的元素
3.在list集合中是用Iterator
Iterator中只提供了删除的方法,如果想要在遍历的过程中添加元素可以是用ListIterator,ListIterator继承了Iterator接口,提供一下几种方法:
- void hasPrevious() 判断游标前面是否有元素;
- Object previous() 返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;
- int nextIndex() 返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;
- int previousIndex() 返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;
- void add(E) 在游标 前面 插入一个元素,注意,是前面
- void set(E) 更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回的元素。注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;
- void remove() 删除迭代器最后一次操作的元素,注意事项和 set 一样。
import com.sun.media.sound.SoftTuning
import java.util.ArrayList
import java.util.List
import java.util.ListIterator
public class Iterator {
public static void main(String[] args) {
//使用iterator移除元素
List list = new ArrayList()
list.add(1)
list.add(2)
list.add(3)
java.util.Iterator iterator = list.iterator()
while (iterator.hasNext()) {
if (iterator.next().equals(2)) {
iterator.remove()
}
}
System.out.println(list.toString())
//使用ListIterator进行操作
List list2 = new ArrayList()
list2.add(4)
list2.add(5)
list2.add(6)
ListIterator listIterator = list2.listIterator()
while (listIterator.hasNext()) {
Object next = listIterator.next()
if (next.equals(5)) {
//移除5,并在5的位置上添加一个4
listIterator.remove()
listIterator.add(4)
System.out.println("判断游标前边是否有元素:" + listIterator.hasPrevious())
System.out.println("返回游标前边的索引元素:" + listIterator.previousIndex())
System.out.println("返回游标后边的索引元素:" + listIterator.nextIndex())
}
//更新6为8
if (next.equals(6)) {
listIterator.set(8)
}
}
System.out.println(list2.toString())
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
4.在set集合中使用Iterator
public class SetIterator {
public static void main(String[] args){
Set set = new HashSet();
set.add(1);
set.add(2);
set.add(3);
java.util.Iterator iterator = set.iterator();
while (iterator.hasNext()){
if (iterator.next().equals(2)){
iterator.remove();
}
}
System.out.println(set.toString());
}
}
5.在Map集合中使用Iterator
public class MapOutput {
/**
* @param args
*/
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3, "ccc");
map.put(4, "ddd");
Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<Integer,String> entry=it.next();
System.out.println("key="+entry.getKey()+","+"value="+entry.getValue());
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>