簡體   English   中英

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

[英]Search string in arraylist advanced (Java)

我使用.equals方法在ArrayList中搜索String,但是用戶必須寫出String的確切名稱。 有沒有辦法顯示匹配包含的用戶輸入的字符串? 例如,如果你搜索'Djang',你想要找到的字符串是'Django'。

你應該看看Levenshtein距離 它測量字符串與另一個字符串的距離。 Wikibooks中甚至還有一個Java實現

然后,這是一個排序和找到最小值的問題。

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();

嘗試String.contains()方法

public boolean contains(CharSequence s)當且僅當此字符串包含指定的char值序列時,返回true。

參數:s - 要搜索的序列

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

拋出:NullPointerException - 如果s為null

自:1.5

例如:

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

然后將Djang傳遞給stringCatcher()將導致返回一個true值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM