我是靠谱客的博主 幸福招牌,最近开发中收集的这篇文章主要介绍关于迭代器嵌套使用<常见问题分析>,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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"); //输出是有序的 
				}
			}
		} 
	}

最后

以上就是幸福招牌为你收集整理的关于迭代器嵌套使用<常见问题分析>的全部内容,希望文章能够帮你解决关于迭代器嵌套使用<常见问题分析>所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部