내가 까먹지 않으려고 정리하는 정렬 방법.
클래스를 생성하고, 특정 속성으로 정렬한다는 가정하에 작성했다. 클래스의 속성으로는 id, time 두 개를 설정.
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class SortTest {
public static void main(String[] args) {
List<SortObject> list = new ArrayList<>();
list.add(new SortObject(1,1));
list.add(new SortObject(1,1));
list.add(new SortObject(2,2));
list.add(new SortObject(3,3));
list.add(new SortObject(4,4));
list.add(new SortObject(5,1));
list.add(new SortObject(5,2));
}//main
static class SortObject{
int time;
int id;
Sort(int time, int id){
this.time= time;
this.id = id;
}
public int getId() {
return id;
}
public int getTime() {
return time;
}
@Override
public String toString() {
return "SortObject{" +
"time=" + time +
", id=" + id +
'}';
}
}//SortObject
}//class
- 한 가지 조건으로 정렬할 경우
// time을 기준으로 오름차순 정렬
list.sort((SortObject s1, SortObject s2)->(s1.time-s2.time));
// time을 기준으로 내림차순 정렬
list.sort((SortObject s1, SortObject s2)->(s2.time-s1.time));
- 두가지 조건으로 정렬할 경우
- 람다표현식 사용
list.sort((o1,o2)->{
//time으로 오름차순 비교
int compare = Long.compare(o1.getTime(), o2.getTime());
if(compare ==0){
//id로 오름차순 비교
return o1.getId().compareTo(o2.getId());
}else{
return compare;
}
})
- Comparator.comparing
//time을 기준으로 내림차순, id를 기준으로 오름차순 정렬
list.sort(Comparator.comparing(SortObject:getTime).reversed().thenComparing(SortObject::getId));
'알고리즘 문제 > 알고리즘 이론' 카테고리의 다른 글
플로이드-워셜 알고리즘 (0) | 2022.08.22 |
---|