问题描述
两个Iterator进行遍历相当于双重for循环 当第集合中的名字和第二个集合的名字相同时移除第二个集合中的数据
有问题的代码
这样写会发现 iterator2 在 iterator1 遍历第一次完之后不会遍历了
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23public static void main(String[] args) { ArrayList<String> name1 = new ArrayList<>(); ArrayList<String> name2 = new ArrayList<>(); name1.add("小王"); name1.add("小明"); name1.add("小红"); name1.add("小芳"); name2.add("小蓝"); name2.add("小明"); name2.add("小芳"); name2.add("小王"); Iterator<String> iterator1 = name1.iterator(); Iterator<String> iterator2 = name2.iterator(); while (iterator1.hasNext()){ String next1 = iterator1.next(); while (iterator2.hasNext()){ String next2 = iterator2.next(); if (next1.equals(next2)){ iterator2.remove(); } } } }
解决方法
每次遍历都去创建Iterator对象
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24public static void main(String[] args) { ArrayList<String> name1 = new ArrayList<>(); ArrayList<String> name2 = new ArrayList<>(); name1.add("小王"); name1.add("小明"); name1.add("小红"); name1.add("小芳"); name2.add("小蓝"); name2.add("小明"); name2.add("小芳"); name2.add("小王"); Iterator<String> iterator1 = name1.iterator(); while (iterator1.hasNext()){ String next1 = iterator1.next(); //将创建iterator2的步骤放到这块 Iterator<String> iterator2 = name2.iterator(); while (iterator2.hasNext()){ String next2 = iterator2.next(); if (next1.equals(next2)){ iterator2.remove(); } } } }
最后
以上就是迷人含羞草最近收集整理的关于解决Iterator迭代器只能遍历一次的全部内容,更多相关解决Iterator迭代器只能遍历一次内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复