在arraylist advanced(Java)中搜索字符串

时间:2015-12-28 22:32:29

标签: java string arraylist

我使用.equals方法在ArrayList中搜索String,但是用户必须编写String的确切名称。有没有办法显示匹配包含的用户输入的字符串? 例如,如果您搜索“Djang'你想要找到的字符串是' Django'。

2 个答案:

答案 0 :(得分:3)

您应该查看Levenshtein Distance。它测量字符串与另一个字符串的距离。甚至有a Java implementation in Wikibooks

然后,这是一个排序和找到最小值的问题。

list.stream()
    .sort(Comparator.comparing(
            s -> LevenshteinDistance.computeLevenshteinDistance(s, input))
    .findFirst();

从那里,也可以过滤以在可接受的距离上添加上限,以防止所有输入返回结果。

list.stream()
    .sort(Comparator.comparing(
            s -> LevenshteinDistance.computeLevenshteinDistance(s, input))
    .filter(s -> LevenshteinDistance.computeLevenshteinDistance(s, input) < limit)
    .findFirst();

答案 1 :(得分:0)

尝试String.contains()方法

  

public boolean contains(CharSequence s)当且仅当if时返回true   该字符串包含指定的char值序列。

     

参数:      s - 要搜索的序列

     

返回:     如果此字符串包含s,则返回true,否则返回false

     

抛出:      NullPointerException - 如果s为null

     

自:   1.5

例如:

String myString = "Django"
public boolean stringCatcher(String userInput) {
    return myString.contains(userInput);
}

然后将Djang传递给stringCatcher()会导致返回true值。