概述
1.什么是Iterator?
Iterator提供了对集合迭代的方法,每个集合都可以返回一个Iterator实例,迭代器可以在迭代的过程中删除集合的底层元素,但是不能直接调用集合的remove()方法移除,可以使用Iterator中的remove()方法进行移除。
- 1
2.在Iterator接口中定义了三个方法:
- hasNext() 如果有元素则继续迭代,返回true
- next() 返回迭代的元素
- remove() 移除返回的元素
- 1
- 2
- 3
3.在list集合中是用Iterator
Iterator中只提供了删除的方法,如果想要在遍历的过程中添加元素可以是用ListIterator,ListIterator继承了Iterator接口,提供一下几种方法:
- 1
- 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;
/**
* Created by lixiaoshuang on 2018/1/29.
*/
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());
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
5.在Map集合中使用Iterator
public class MapOutput {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
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>
最后
以上就是欢喜老鼠为你收集整理的iterator的用法的全部内容,希望文章能够帮你解决iterator的用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复