我有一个这样的用户描述列表:
0_Mary_Rose_maryrose@gmail.com
1_John_Smith_johnsmith@gmail.com
如何按字母顺序排列列表?
我有这种方法:
protected List<String> ShowUsers() { // show users list
List<String> allUsersDesc = new ArrayList<>(); // creates list for users description
for (Map.Entry<Integer, User> user : _userMap.entrySet()) { // scrolls users list
allUsersDesc.add(user.getValue().getUserDescription()); // adds registered users
}
Collections.sort(allUsersDesc); // sorts by description
return allUsersDesc; // return description list }
和getUserDescription
:
public String getUserDescription(){
String description = "" + getUserId() + "-" + getName() + "-" + getEmail() + "-" + getBehavior() + "-" + isActive();
return description;
}
但是像这样,它是按描述排序的,描述的第一项是数字,因此它是按数字而不是用户名排序的。
答案 0 :(得分:0)
您可以使用下面的代码删除整数,然后比较字符串
Collections.sort(list, new Comparator<String>() {
public int compare(String o1, String o2) {
return removeInt(o1).compareTo(removeInt(o2));
}
String removeInt(String s) {
String num = s.replaceAll("[0-9]+", "");
return num;
}
});
答案 1 :(得分:-1)
allUsersDesc.sort(Comparator.comparing(desc -> desc.split("_")[1]));