[英]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();
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.