-2

我正在从 DB 中以 List 格式获取数据。

UserSession 将具有 WorkStationName、UserName 和 AreaName。

现在我想先对 WorkStationname 进行排序,然后是 userName,然后是 AreaName。

如何在java中做到这一点?是否可以使用 Comparator 来做到这一点?

4

3 回答 3

1

最好的办法:

public void sortAccordingToAboveRequirement(List<UserSession> userSessions){

 Collections.sort(userSessions,myComparator);

 }


  static Comparator<UserSession> myComparator=new Comparator<UserSession>() {
    @Override
        public int compare(UserSession user1, UserSession user2) {
        int value=0;
        value=user1.getWorkStationName().compareTo(user2.getWorkStationName())
        if(value!=0) return value;
        value=user1.getUserName().compareTo(user2.getUserName());
        if(value!=0) return value;
        value=user1.getAreaName().compareTo(user2.getAreaName());
        return value;
    }
};

如果您愿意,请使用 compareToIgnoreCase() :)

于 2013-10-31T13:08:18.730 回答
0

您可以使用查询来执行此操作。
或者您可以覆盖一个compare函数。
这篇关于 stackoverflow 的帖子将帮助您做到这一点

于 2013-10-31T13:06:19.047 回答
0

您可以使用比较器,也可以为您的类实现可比较接口。第二种方式我举个例子:

Collections.sort(UserSessionList);

UserSession 类implements Comparable<UserSession>现在必须。然后你可以重写这个类的 compareTo 方法。例如:

@Override
public int compareTo(UserSession o) {

    if(null== o)
        return 1;
    if(getWorkStationName() == null && o.getWorkStationName()==null)
        return 0;
    if(getWorkStationName() == null && o.getWorkStationName()!=null)
        return -1;
    if(getWorkStationName() != null && o.getWorkStationName()==null)
        return 1;
    return o.getWorkStationName().compareTo(getWorkStationName());
}

剩下的比较函数你必须自己写!:)

于 2013-10-31T13:10:14.467 回答