我從格式List中獲取來自數據庫的數據。Java +比較器+排序
UserSession將具有WorkStationName,UserName和AreaName。
現在我想先排序它的WorkStationname明智然後用戶名,然後AreaName。
如何在java中做到這一點?是否可以使用比較器來做到這一點?
我從格式List中獲取來自數據庫的數據。Java +比較器+排序
UserSession將具有WorkStationName,UserName和AreaName。
現在我想先排序它的WorkStationname明智然後用戶名,然後AreaName。
如何在java中做到這一點?是否可以使用比較器來做到這一點?
您可以使用查詢來做到這一點。
或者您可以覆蓋compare
函數。
This Post上計算器可以幫助你做到這一點
它應該是一個評論,比答案... –
你好,我試過了。但它說我需要一些聲譽或積分(不管它是什麼)將它置於評論中。無論如何,解決方案總是一個解決方案。 (我的意思是我試圖給)。並看到upvoted的答案。這是幾乎相同的帖子鏈接,我給了 –
嘗試我給出的答案:) –
最好的辦法:
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(),如果你想:)
您可以使用一個比較,也可以實現compareable接口你上課。我給你舉個例子爲謝勝利方式:
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());
}
比較功能的其餘部分,你必須自己寫! :)
我敢打賭,你還沒有嘗試過。 :) –
你到底做了什麼?在這裏發佈你的進度 –
我已經創建了第一個區域compersion,然後這個列表將再次對用戶comperision進行排序,然後這個列表將再次被Workstation的Comparator排序。但它沒有給我正確的結果。 – user223614