我有一个大的字符串列表的名称和自动填充功能的组合框。 目前我只是根据包含过滤。 但是组合框中的顺序并不好。如何根据字符串的等同性对字符串列表进行排序?
有没有一种简单的方法来根据与字符串的等同性对字符串列表(包含后)进行排序?
例子:
Currently:
combobox input -> Neustadt
List<String> 1. Bad Neustadt an der Saale
2. Bremen-Neustadt
3. ...
n. Neustadt
n+1. Neustadt/Pelzerhaken
Wandted:
1. Neustadt
2. Neustadt/Pelzerhaken
3. ...
n. Bremen-Neustadt
编辑 基于切赫Gladkikh的回答我的解决方案是以下方法:
public static List<String> sortListCompairedToEquality(List<String> list, String str) {
if (list == null || str == null)
return null;
final String compStr = str.toLowerCase();
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
if (s1.equals(compStr) && !s2.equals(compStr)) {
return -1;
} else if (!s1.equals(compStr) && s2.equals(compStr)) {
return 1;
} else if (s1.indexOf(compStr) < s2.indexOf(compStr)) {
return -1;
} else if (s1.indexOf(compStr) > s2.indexOf(compStr)) {
return 1;
}
return 0;
}
});
return list;
}
您可以实现'比较器'接口,并定义'比较'方法中要比较的方式。 – TheLostMind
使用'Collection.sort(列表)' –
@NinadPingale - 没有自定义的'Comparator'实现,'Collections.sort()'不会帮助..字符串将按*自然顺序*排序。 – TheLostMind