我想知道防止以可扩展方式访问多个循环的最佳方法
String token;
ArrayList numbers;
ArrayList names;
for(String n : numbers){
if(token.equals(n)){
break;
}
}
for(String n : names){
if(token.equals(n)){
break;
}
}
我想跳过访问第二个循环,如果我发现第一个循环,但我想以可扩展的方式进行,因为可能以后我会有5个列表
我想到的解决方案
在循环中进行多次返回,但这不是一种好的编程技术
设置一个标志并在其他循环中使用它(通过if条件或将其置于循环条件中,但是当我们有5个不同的列表时,这意味着我将有5个标志并检查循环之前我
我很感激你的建议。谢谢
答案 0 :(得分:4)
public static boolean contains (Object element, Collection <?> ... collections)
{
for (Collection c: collections)
if (c.contains (element)) return true;
return false;
}
答案 1 :(得分:1)
如果您的Set
有重复项,请使用MultiSet
或番石榴ArrayList
。
然后你只需要做
String token = "";
Set<String> numbers = Sets.newHashSet();
Set<String> names = Sets.newHashSet();
if (numbers.contains(token)) {
}
else if (names.contains(token)) {
}
对contains(token)
的{{1}}检查几乎总是比Set
更快。
答案 2 :(得分:0)
您是否知道可以标记循环,并将标记作为参数传递给break
或continue
语句?
像这样:
mytag: for(int i =0; i < 10; i++){
for(int j =0; j < 10; j++){
if(done){
break mytag;
}
}
}
这适用于switch
,while
和do-while
,适用于continue
和break
。