DB의 데이터를 List 형식으로 가져옵니다.Java + comparator + sort
UserSession에는 WorkStationName, UserName 및 AreaName이 있습니다.
이제 WorkStationname을 먼저 정렬하고 userName을 먼저 정렬 한 다음 AreaName을 정렬하려고합니다.
Java에서 어떻게 수행합니까? 그것은 Comparator를 사용하여 가능합니까?
DB의 데이터를 List 형식으로 가져옵니다.Java + comparator + sort
UserSession에는 WorkStationName, UserName 및 AreaName이 있습니다.
이제 WorkStationname을 먼저 정렬하고 userName을 먼저 정렬 한 다음 AreaName을 정렬하려고합니다.
Java에서 어떻게 수행합니까? 그것은 Comparator를 사용하여 가능합니까?
쿼리를 사용하여 수행 할 수 있습니다.
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 인터페이스를 구현할 수 있습니다하고자하는 경우 당신 수업. 나는 secound 방법을 예를 하나 들어 :
Collections.sort(UserSessionList);
클래스 사용자 세션해야 implements Comparable<UserSession>
지금. 그리고 나서이 클래스의 compareTo 메소드를 오버라이드 할 수 있습니다. 예 :
나머지는 지금 당신이 직접 작성해야합니다! :)
나는 그것을 시도하지 않았을 것입니다. :) –
지금까지 해본 일이 뭐야? 여기에 귀하의 진행을 게시 –
내가 처음으로 영역 compersion을 작성한 다음이 목록은 사용자 comperision을 다시 정렬 한 다음이 목록을 다시 Workstation.But의 Comparator로 정렬하여 올바른 결과를 얻지 못했습니다. – user223614