我有一个大字符串列表和组合框的自动填充功能。 目前我只是根据包含过滤。 但是组合框中的顺序并不好。
是否有一种简单的方法可以根据字符串的相等性对字符串列表(在包含之后)进行排序?
示例:
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
修改 根据Petr 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;
}
答案 0 :(得分:1)
目前尚不清楚&#34;字符串的相等规则&#34;你记得。通常,如果您想根据某些规则进行排序,请使用&#39; sort&#39;自定义比较器的方法:
java.util.Collections.sort(listOfStrings, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return 0; // Your comparison logic goes here
}
});
有关详细信息,请参阅java.util.Comparator接口的javadoc。