2013-10-31 4 views
-2

DB의 데이터를 List 형식으로 가져옵니다.Java + comparator + sort

UserSession에는 WorkStationName, UserName 및 AreaName이 있습니다.

이제 WorkStationname을 먼저 정렬하고 userName을 먼저 정렬 한 다음 AreaName을 정렬하려고합니다.

Java에서 어떻게 수행합니까? 그것은 Comparator를 사용하여 가능합니까?

+6

나는 그것을 시도하지 않았을 것입니다. :) –

+0

지금까지 해본 일이 뭐야? 여기에 귀하의 진행을 게시 –

+0

내가 처음으로 영역 compersion을 작성한 다음이 목록은 사용자 comperision을 다시 정렬 한 다음이 목록을 다시 Workstation.But의 Comparator로 정렬하여 올바른 결과를 얻지 못했습니다. – user223614

답변

0

쿼리를 사용하여 수행 할 수 있습니다.
compare 함수를 재정의 할 수 있습니다. 유래에
This Post은 당신이 도움이 될

+0

답변보다는 댓글이되어야합니다 ... –

+0

예, 시도했습니다. 그러나 나는 그것이 어떤 평판이나 포인트 (그것이 무엇이든)를 코멘트에 넣어야한다고 말한다. 어쨌든 솔루션은 항상 솔루션입니다. (나는 줄 것을 의미했다). 그리고 upvoted 대답을 참조하십시오. 그것은 거의 동일한 게시물 링크입니다. –

+0

나에게 주어진 답을보십시오 :) –

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()는 :)

0

당신은 비교기를 사용하거나이에 compareable 인터페이스를 구현할 수 있습니다하고자하는 경우 당신 수업. 나는 secound 방법을 예를 하나 들어 :

Collections.sort(UserSessionList); 

클래스 사용자 세션해야 implements Comparable<UserSession> 지금. 그리고 나서이 클래스의 compareTo 메소드를 오버라이드 할 수 있습니다. 예 :

나머지는 지금 당신이 직접 작성해야합니다! :)