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

ctzwtxfj  于 2023-04-10  发布在  Java
关注(0)|答案(5)|浏览(104)

假设我有一个数组列表:

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

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

arrayList.containsSubString('string1');

除了遍历ArrayList中的每个元素并检查“string1”是否是该元素的字符串的子字符串之外,还能怎么做呢?

ilmyapht

ilmyapht1#

我唯一能想到的方法就是做这样的事情:

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

我不知道这是否被认为是一种好的做法。

xsuvu9jc

xsuvu9jc2#

对于ArrayList,除了遍历它之外没有其他选择。但是你可以使用其他数据结构,比如前缀树(例如ternary search tree,参见java sample)。

myzjeezk

myzjeezk3#

我认为遍历列表并检查每一项是最快的方法。这也是每个人理解你的代码的方式。(除了构建自己的数据结构)。
无论如何,您也可以使用org.apache.commons.collections.CollectionUtils#find(Collection, Predicate)
find(java.util.Collection collection, Predicate predicate)查找给定集合中与给定 predicate 匹配的第一个元素。

tv6aics1

tv6aics14#

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

p5cysglq

p5cysglq5#

您可以使用NavigableSet

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

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

相关问题