Check if ArrayList<String> contains part of a string

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-17 21:22:50

问题


Say I have an ArrayList:

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

and I wish to return the the first element of the arrayList when I say arrayList.containsSubString('string1'); How could this be done other than iterating through each of the elements of the arrayList and checking if string1 is a substring of that element string?


回答1:


The only way I can think of is doing something like:

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

Don't know if it is considered good practice though.




回答2:


With an ArrayList there is no other option than iterating through it. But you could use other data structures like a prefix tree (e.g. a ternary search tree, see this java sample).




回答3:


Can't. Even if there was an equivalent of List.contains() it just does a linear search under the hood.




回答4:


I think iterating though the list and checking each item is the fastest way. And it is also the way every one understand your code. (except of building your own data structure).


Anyway you can also use org.apache.commons.collections.CollectionUtils#find(Collection, Predicate)

find(java.util.Collection collection, Predicate predicate) Finds the first element in the given collection which matches the given predicate.




回答5:


You can use a NavigableSet

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

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


来源:https://stackoverflow.com/questions/6428005/check-if-arrayliststring-contains-part-of-a-string

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!