检查 ArrayList<String> 是否包含 Java 中的字符串的一部分

问题描述 投票:0回答:5

假设我有一个 ArrayList:

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

我希望返回包含“string1”的 ArrayList 的第一个元素作为该元素字符串的一部分。
例如

arrayList.containsSubString('string1');  

除了遍历 ArrayList 的每个元素并检查“string1”是否是该元素字符串的子字符串之外,还能如何完成?

java arraylist substring contains
5个回答
12
投票

我能想到的唯一方法就是做类似的事情:

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

虽然不知道这是否被认为是好的做法。


5
投票

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


2
投票

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


无论如何你也可以使用

org.apache.commons.collections.CollectionUtils#find(Collection, Predicate)

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


1
投票

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


0
投票

您可以使用 NavigableSet

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

String find =
String firstMatch = set.ceiling(find);
© www.soinside.com 2019 - 2024. All rights reserved.