按名称排序列表

时间:2019-11-18 14:28:02

标签: java list

我有一个这样的用户描述列表:

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;
    }

但是像这样,它是按描述排序的,描述的第一项是数字,因此它是按数字而不是用户名排序的。

2 个答案:

答案 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]));