我正在从 DB 中以 List 格式获取数据。
UserSession 将具有 WorkStationName、UserName 和 AreaName。
现在我想先对 WorkStationname 进行排序,然后是 userName,然后是 AreaName。
如何在java中做到这一点?是否可以使用 Comparator 来做到这一点?
我正在从 DB 中以 List 格式获取数据。
UserSession 将具有 WorkStationName、UserName 和 AreaName。
现在我想先对 WorkStationname 进行排序,然后是 userName,然后是 AreaName。
如何在java中做到这一点?是否可以使用 Comparator 来做到这一点?
最好的办法:
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() :)
您可以使用查询来执行此操作。
或者您可以覆盖一个compare
函数。
这篇关于 stackoverflow 的帖子将帮助您做到这一点
您可以使用比较器,也可以为您的类实现可比较接口。第二种方式我举个例子:
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());
}
剩下的比较函数你必须自己写!:)