람다식을 이용해 Arrays.sort 메소드를 오버라이딩하여 쉽게 정렬할 수 있다.
첫 번째 인덱스 값에 따라 정렬되고, 만약 첫 번째 인덱스 값이 동일한 경우에는 두 번째 있는 값을 비교하여 정렬시킨다.
아래와 같은 코드를 사용한다.
Arrays.sort(배열, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if(o1[0].toString().contentEquals(o2[0].toString()))
return o1[1].toString().compareTo(o2[1].toString());
else
return o1[0].toString().compareTo(o2[0].toString());
}
});
다음과 같은 코드를 작성하였을 때 결과는 아래 사진과 같다.
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
String[][] tickets = {{"ICN", "SFO"}, {"ICN", "ATL"}, {"SFO", "ATL"}, {"ATL", "ICN"}, {"ATL", "SFO"}};
System.out.print("정렬 전 : ");
for(int i=0; i<tickets.length; i++)
System.out.print(Arrays.asList(tickets[i])+ " ");
Arrays.sort(tickets, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if(o1[0].toString().contentEquals(o2[0].toString()))
return o1[1].toString().compareTo(o2[1].toString());
else
return o1[0].toString().compareTo(o2[0].toString());
}
});
System.out.print("\n정렬 후 : ");
for(int i=0; i<tickets.length; i++)
System.out.print(Arrays.asList(tickets[i])+ " ");
}
'Backend > JAVA' 카테고리의 다른 글
[IntelliJ] jdk 18 한글 깨짐 (해결 방법 : jdk 버전 변경하기) (0) | 2022.08.02 |
---|---|
[JAVA] split 함수 .(점) 동작 안될때 (java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 에러) (0) | 2022.04.21 |
[JAVA] Store 프로젝트 (0) | 2020.10.23 |
[JAVA] 학과 프로그램 #5 - 강의 수강 기능 추가(+파일) (0) | 2020.10.03 |
[JAVA] 학과 프로그램 #4 - 점수 기능 추가하기(+파일) (0) | 2020.09.20 |
댓글