728x90
반응형
▷ Example
*개선 2024-11-26
public static void testSort() {
// 테스트 데이터 생성
var list = new ArrayList<>(List.of(
new DistVO("짱구분식", 11),
new DistVO("홍길동분식", 5),
new DistVO("김길동분식", 5),
new DistVO("십이분식", 34),
new DistVO("저먼분식", 94)
));
// 정렬 전 출력
System.out.println("정렬 전 ====================");
list.forEach(System.out::println);
// 거리순으로 정렬(오름차순 ASC)
list.sort(Comparator.comparingInt(DistVO::getDist));
// 정렬 후 출력 (오름차순)
System.out.println("오름차순 정렬 후 ====================");
list.forEach(System.out::println);
// 거리순으로 정렬(내림차순 DESC)
list.sort(Comparator.comparingInt(DistVO::getDist).reversed());
// 정렬 후 출력 (내림차순)
System.out.println("내림차순 정렬 후 ====================");
list.forEach(System.out::println);
}
정렬 전 ====================
DistVO(dist=11, name=짱구분식)
DistVO(dist=5, name=홍길동분식)
DistVO(dist=5, name=김길동분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=94, name=저먼분식)
오름차순 정렬 후 ====================
DistVO(dist=5, name=홍길동분식)
DistVO(dist=5, name=김길동분식)
DistVO(dist=11, name=짱구분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=94, name=저먼분식)
내림차순 정렬 후 ====================
DistVO(dist=94, name=저먼분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=11, name=짱구분식)
DistVO(dist=5, name=홍길동분식)
DistVO(dist=5, name=김길동분식)
*개선 전
public static void testSort() {
// 테스트 데이터 생성
List<DistVO> list = new ArrayList<DistVO>();
DistVO vo;
vo = new DistVO();
vo.setName("짱구분식");
vo.setDist(11);
list.add(vo);
vo = new DistVO();
vo.setName("홍길동분식");
vo.setDist(5);
list.add(vo);
vo = new DistVO();
vo.setName("김길동분식");
vo.setDist(5);
list.add(vo);
vo = new DistVO();
vo.setName("십이분식");
vo.setDist(34);
list.add(vo);
vo = new DistVO();
vo.setName("저먼분식");
vo.setDist(94);
list.add(vo);
// 정렬 전 출력
System.out.println("정렬 전 ====================");
for(DistVO data : list){
System.out.println(data);
}
System.out.println("정렬 전 ====================");
// 거리순으로 정렬(가까운 순 오름차순 ASC)
Comparator<DistVO> cp = new Comparator<DistVO>() {
@Override
public int compare(DistVO data1, DistVO data2){
int a = data1.getDist();
int b = data2.getDist();
/*
[내림차순 DESC] a > b = -1
DistVO(dist=94, name=저먼분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=11, name=짱구분식)
DistVO(dist=5, name=홍길동분식)
DistVO(dist=5, name=김길동분식)
[오름차순 ASC] a > b = 1
DistVO(dist=5, name=김길동분식)
DistVO(dist=5, name=홍길동분식)
DistVO(dist=11, name=짱구분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=94, name=저먼분식)
*/
if(a > b) {
return 1;
} else {
return -1;
}
}
};
// 정렬
Collections.sort(list, cp);
// 정렬 후 출력
System.out.println("정렬 후 ====================");
for(DistVO data : list){
System.out.println(data);
}
System.out.println("정렬 후 ====================");
}
/**
결과 :
정렬 전 ====================
DistVO(dist=11, name=짱구분식)
DistVO(dist=5, name=홍길동분식)
DistVO(dist=5, name=김길동분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=94, name=저먼분식)
정렬 전 ====================
정렬 후 ====================
DistVO(dist=5, name=김길동분식)
DistVO(dist=5, name=홍길동분식)
DistVO(dist=11, name=짱구분식)
DistVO(dist=34, name=십이분식)
DistVO(dist=94, name=저먼분식)
정렬 후 ====================
*/
728x90
728x90
'▶ Back-End > Java' 카테고리의 다른 글
문자열 n번째 이후 마스킹 처리 (0) | 2021.04.22 |
---|---|
두 지점간의 거리 계산 (0) | 2021.04.16 |
숫자 천 단위 콤마 추가 (0) | 2021.03.05 |
가변적인 특정 문자열을 원하는 위치에 추가 (0) | 2021.03.05 |
JSON Unrecognized field 해결방법(@JsonIgnoreProperties) (0) | 2021.03.03 |
댓글