HashSet中遍历字符串元素同时检查是否包含在其它字符串里的问题

我想在一个HashSet<String>集合中,遍历其中的每一个字符串元素,同时判断是否存在包含这个字符串的在该HashSet<String>集合中的其它字符串元素。如果存在则调用“void 方法1(String)”,若不存在则调用“void 方法2(String)”。
请问该怎么做?求代码。可以声明其它的变量或者是集合。

//用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;
}
}

参考资料:还有其他问题的话,给我发百度消息

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-08
就是使用2次iterator进行遍历,我写了一个测试代码如下:
package collect.test;

import java.util.HashSet;
import java.util.Iterator;

public class HashSetTest {

public static void main(String[] args) {

HashSet<String> s = new HashSet<String>();
s.add("joe");
s.add("aaa");
s.add("bob");
s.add("b");

HashSet<String>s2 = (HashSet<String>) s.clone();
Iterator<String> iterator1=s.iterator();

while(iterator1.hasNext())
{
String temp = iterator1.next();
Iterator<String> iterator2=s2.iterator();
while (iterator2.hasNext()) {
String str2 = iterator2.next();
if(str2.contains(temp)&&!str2.equals(temp))
{
//void 方法1
System.out.println(str2+" contains "+temp);
continue;
}
else {
//void 方法2
System.out.println(str2+" not contains "+temp);
continue;
}
}
}

}

}
第2个回答  2010-05-08
用双循环,两个Iterator:

--------------------------------------------------------------
import java.util.HashSet;
import java.util.Iterator;

public class Demo {
public void method1 (String str) {
//your method here
}

public void method2 (String str) {
//your method here
}

public void check (HashSet<String> hs) {
Iterator<String> outer = hs.iterator();

while (outer.hasNext()) {
Iterator<String> inner = hs.iterator();
String str = outer.next();
boolean isSubstr = false;

while (inner.hasNext()) {
String str1 = inner.next();
if (str1.contains(str) && !str1.equals(str)) {
isSubstr = true;
break;
}
}
if (isSubstr)
method1(str);
else
method2(str);
}
}
}
第3个回答  2010-05-15
不知道两个方法是否会对Set进行删除操作,如果是,就要进行复制了
相似回答