概述
Iterator:
举例关于链表迭代器嵌套使用:
问两个集合的交集,使用迭代器嵌套实现
使用Set集合的LinkedHashSet实现类进行编写。因为其输出是有序的
Iterator<String> iter = s1.iterator();
Iterator<String> iter1 = s2.iterator();
//示例1:
//错误的
while(iter1.hasNext()){
if(s1.contains(iter1.next())) {
System.out.print(iter1.next() + "t"); //输出是有序的
}
}
/*解释:因为在if语句中已经存在iter1.next()。所以在syso中输出时iter1.next()相当于又next了一下。
正确的*/
while(iter1.hasNext()){
String str = iter1.next();
if(s1.contains(str)) {
System.out.print(str + "t"); //输出是有序的
}
}
//示例2:
//错误的
public void intersection(Set<String> s1,Set<String> s2) {
Iterator<String> iter = s1.iterator();
Iterator<String> iter1 = s2.iterator();
while(iter.hasNext()){ //w1
String str1 = iter.next();
while(iter1.hasNext()){ //w2
String str2 = iter1.next();
if(str1.equals(str2)) {
System.out.print(str2 + "t"); //输出是有序的
}
}
}
}
/*解释:在第一次循环的时候,w1的第一个元素和w2循环的所有元素进行了比较。w1的第二次循环的话就不会进入w2循环。因为在w2循环中 iter1.hasNext() 已经循环完了,返回了fasle。iter1是局部变量,没有在第一次while循环中进行初始化。*/
//正确的
public void intersection(Set<String> s1,Set<String> s2) {
Iterator<String> iter = s1.iterator();
Iterator<String> iter1;
while(iter.hasNext()){
iter1 = s2.iterator();
String str1 = iter.next();
while(iter1.hasNext()){
String str2 = iter1.next();
if(str1.equals(str2)) {
System.out.print(str2 + "t"); //输出是有序的
}
}
}
}
最后
以上就是幸福招牌为你收集整理的关于迭代器嵌套使用<常见问题分析>的全部内容,希望文章能够帮你解决关于迭代器嵌套使用<常见问题分析>所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复