检查ArrayList <string>是否包含字符串</string>的一部分

时间:2011-06-21 15:35:09

标签: java arraylist

假设我有一个ArrayList:

<string1.4>
<string2.4>
<string3.4>

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

5 个答案:

答案 0 :(得分:12)

我能想到的唯一方法是做一些事情:

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

不知道它是否被视为良好做法。

答案 1 :(得分:5)

使用ArrayList除了迭代之外别无选择。但您可以使用其他数据结构,例如前缀树(例如ternary search tree,请参阅此java sample)。

答案 2 :(得分:1)

不能。即使有相当于List.contains()的东西,它也只是在线下进行线性搜索。

答案 3 :(得分:1)

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


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

  

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

答案 4 :(得分:0)

您可以使用NavigableSet

NavigableSet<String> set = new TreeSet<String>();
// add strings

String find =
String firstMatch = set.ceiling(find);