假设我有一个 ArrayList:
<string1.4>
<string2.4>
<string3.4>
我希望返回包含“string1”的 ArrayList 的第一个元素作为该元素字符串的一部分。
例如
arrayList.containsSubString('string1');
除了遍历 ArrayList 的每个元素并检查“string1”是否是该元素字符串的子字符串之外,还能如何完成?
我能想到的唯一方法就是做类似的事情:
strs.get(strs.indexOf(new Object() {
@Override
public boolean equals(Object obj) {
return obj.toString().contains(s);
}
}));
虽然不知道这是否被认为是好的做法。
我认为遍历列表并检查每个项目是最快的方法。这也是每个人理解您的代码的方式。 (构建自己的数据结构除外)。
org.apache.commons.collections.CollectionUtils#find(Collection, Predicate)
找到第一个 给定集合中的元素 匹配给定的谓词。find(java.util.Collection collection, Predicate predicate)
不能。即使有等效的 List.contains() 它也只是在引擎盖下进行线性搜索。
您可以使用 NavigableSet
NavigableSet<String> set = new TreeSet<String>();
// add strings
String find =
String firstMatch = set.ceiling(find);