如何检查字符串是否在任何ArrayList中

时间:2014-02-21 08:01:32

标签: java

所以我想检查我的字符串是否在任何arraylist中而不必执行: if(ArrayList1.Contains("Test") || ArrayList2.Contains("Test") || ArrayList3.Contains("Test")) { }

我不知道是否有办法用循环来做到这一点。

由于

4 个答案:

答案 0 :(得分:3)

创建一个包含所有ArrayLists的ArrayList,然后循环遍历它们,就像:

for(ArrayList list : arrays){//arrays contains all your arraylsits, ArrayList1, ArrayList2 ...
   return list.contains(value);
}

答案 1 :(得分:2)

将所有ArrayLists的内容放入Set中,然后查询Set。

Set set=new HashSet();
for (ArrayList list: allLists) {
   set.addAll(list);
}
...
return set.contains("Test");

实际上,可以使用ArrayList或任何集合代替HashSet,但Hashset.contains是最快的方法。

答案 2 :(得分:0)

除了像你一样使用if之外没有多少选择,但是,如果你使用Guava,你可以使用Iterables

if (Iterables.contains(Iterables.concat(list1, list2, etc), theString))
    // do your stuff

如果没有,请创建一个包含所有其他列表的完整列表,并在其上使用.contains()

private static <T> List<T> concatLists(final List<T> list1, 
    final List<T>... others)
{
    final List<T> ret = new ArrayList<T>(list1);
    for (final List list: others)
        ret.addAll(list);
    return ret;
}

// In code:

if (concatLists(list1, list2, etc).contains(theString))
    // do your stuff

答案 3 :(得分:0)

相反,您可以编写自定义ArrayList类,并覆盖包含检查唯一内容的方法。

public class UniqueNamesList extends ArrayList<String> {
    @Override
    public boolean contains(Object o) {
        String inStr = (String)o;
        for (String s : this) {
            if (inStr.equalsIgnoreCase(s)) return true;
        }
        return false;
    }
}