所以我要检查,如果我的字符串是任何ArrayList中而无需做: if(ArrayList1.Contains("Test") || ArrayList2.Contains("Test") || ArrayList3.Contains("Test")) { }
如何检查一个字符串是否是在任何的ArrayList
我不知道是否有一种方法,我可以做到这一点与一个循环。
感谢
所以我要检查,如果我的字符串是任何ArrayList中而无需做: if(ArrayList1.Contains("Test") || ArrayList2.Contains("Test") || ArrayList3.Contains("Test")) { }
如何检查一个字符串是否是在任何的ArrayList
我不知道是否有一种方法,我可以做到这一点与一个循环。
感谢
比使用if
像你这样做,不过,如果你使用番石榴,您可以使用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
不使用番石榴。 :/ – LucaSpeedStack
然后只需创建一个包含所有其他的列表并使用'.contains()'就可以了 – fge
没有想到这个谢谢! – LucaSpeedStack
创建一个ArrayList包含所有的ArrayList,然后遍历它们,就像:
for(ArrayList list : arrays){//arrays contains all your arraylsits, ArrayList1, ArrayList2 ...
return list.contains(value);
}
或只是做.contains在包含所有arraylists :)的数组列表 – LucaSpeedStack
@LucaSpeedStack不,你不能 – NimChimpsky
相反,你可以编写自定义ArrayList类,并覆盖contains方法来检查的独特内容。
将所有ArrayList的内容放入Set中,然后查询该Set。
Set set=new HashSet();
for (ArrayList list: allLists) {
set.addAll(list);
}
...
return set.contains("Test");
实际上,ArrayList的或任何集合,可用于代替HashSet的,但Hashset.contains
是最快的方法。
问题在于构建初始集合相当长。可能或不可能比连接所有列表更快... – fge
嘿那里,我使用的是HashSets,但是如果我想从我刚刚检查过的哈希集中删除字符串,并且如果它确实在我想要的字符串中无需查明它来自哪个数组列表即可将其删除 – LucaSpeedStack
什么是你的ArrayList变量名?他们是否遵循一种模式? –
是包含?还是它包含? –
是的,第一个是:第二个是:三分之二是三个e.t.c,最多十个。 – LucaSpeedStack