检查ArrayList 是否包含字符串的一部分

假设我有一个ArrayList:

   

当我说arrayList.containsSubString(’string1’)时,我希望返回arrayList的第一个元素; 除了遍历arrayList每个元素并检查string1是否是该元素字符串的子字符串之外,怎么办呢?

我能想到的唯一方法就是:

 strs.get(strs.indexOf(new Object() { @Override public boolean equals(Object obj) { return obj.toString().contains(s); } })); 

不知道它是否被认为是好习惯。

使用ArrayList除了迭代它之外别无选择。 但您可以使用其他数据结构,如前缀树(例如三元搜索树 ,请参阅此Java示例 )。

不能。 即使有一个等效的List.contains(),它只是在引擎盖下进行线性搜索。

我认为迭代列表并检查每个项目是最快的方法。 它也是每个人理解你的代码的方式。 (除了构建自己的数据结构)。


无论如何你也可以使用org.apache.commons.collections.CollectionUtils#find(Collection, Predicate)

find(java.util.Collection collection, Predicate predicate)查找给定集合中与给定谓词匹配的第一个元素。

您可以使用NavigableSet

 NavigableSet set = new TreeSet(); // add strings String find = String firstMatch = set.ceiling(find);