我是靠谱客的博主 迷人含羞草,最近开发中收集的这篇文章主要介绍解决Iterator迭代器只能遍历一次,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述

两个Iterator进行遍历相当于双重for循环 当第集合中的名字和第二个集合的名字相同时移除第二个集合中的数据

有问题的代码

        这样写会发现 iterator2 在 iterator1 遍历第一次完之后不会遍历了

public 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对象

public 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迭代器只能遍历一次所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部