检查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);