HashSet的两种遍历方式 迭代器 增强for。
//通过迭代器遍历HashSet。
Iterator<String> it = hash.iterator();。
while(it.hasNext()) {。
System.out.println(it.next());。
System.out.println("==================");。
//通过加强for循环遍历HashSet。
for(String s: hash) {。
System.out.println(s);。
实现是会变的,HashSet的迭代器在输出时“不保证有序”,但也不是“保证无序”。也就是说,输出时有序也是允许的,但是你的程序不应该依赖这一点。
HashSet<String> hash = new HashSet<String>();。
//添加元素
hash.add("abc");。
hash.add("java");。
hash.add("haah");。
//通过增强for循环遍历HashSet。
for(String s: hash) {。
System.out.println(s);。
//通过迭代器遍历HashSet。
Iterator<String> it = hash.iterator();。
while(it.hasNext()) { 。
System.out.println(it.next());。
HashSet<String> set=new HashSet<String>();。
set.add("1");。
set.add("2");。
set.add("3");。
Iterator<String> iterator=set.iterator();。
while(iterator.hasNext()){。
System.out.println(iterator.next());。
}
控制台输出:
对于集合这块的类都可以这样写的,比如你把第一行换成:
ArrayList<String> set=new ArrayList<String>();。
后面的程序不动,一样可以遍历输出的。
不太懂的话可以百度Iterator的用法和原理。
//用HashSet性能不是很好,用TreeSet的话大大提高效率。
import java.util.*;。
public class Test{。
public static void main(String[] args) {。
Set<String> set=new TreeSet<String>();//HashSet直接替换。
for (String s:set) {。
if(isSubString(s, set)){。
//调用方法一
}else {
//调用方法二
}
}
}
public static boolean isSubString(String target,Set<String> set){。
for (String s:set) {。
if(s.contains(target)&&!s.equals(target))。
return true;。
}
return false;。
}
原文地址:http://www.qianchusai.com/hashset%E9%81%8D%E5%8E%86.html