개발자의 서재
[JAVA]Comparator 를 이용한 배열, List 정렬 본문
기본적으로 배열은 Arrays
List는 Collections 를 이용해서
정수형타입 or 문자형타입으로 오름차순, 내림차순 정렬이 가능하다.
String[] numbers = {"1", "3", "2", "5", "4"};
//Arrays 를 이용한 배열정렬 (오름차순)
Arrays.sort(numbers);
for(String n : numbers) {System.out.print(n+",");}
//1,2,3,4,5,
//Arrays 를 이용한 배열정렬 (내림차순)
Arrays.sort(numbers,Collections.reverseOrder());
for(String n : numbers) {System.out.print(n+",");}
//5,4,3,2,1,
List<String> list = new ArrayList<String>();
list.add("2");
list.add("4");
list.add("1");
list.add("5");
list.add("3");
//리스트 기존 정렬 (오름차순)
Collections.sort(list);
for(String n : numbers) {System.out.print(n+",");}
//1,2,3,4,5,
//리스트 기본 정렬 (내림차순)
Collections.sort(list,Collections.reverseOrder());
for(String n : numbers) {System.out.print(n+",");}
//5,4,3,2,1,
별도의 정렬기준을 만드는 방법에는 Comparator 를 사용한 방법이 있다.
(Comparator 의 compare(o1,o2) 는 String 타입의 비교만 가능하다.)
String[] numbers2 = {"3", "30", "32", "5", "9"};
// Comparator 로 별도 정렬기준을 만든다.
// 두 숫자를 문자형식으로 연결하여 합쳤을 때 더 큰수가 앞으로 오도록.
// o1,o2를 순서대로 비교했을때 원하는조건에서 -1을 리턴하도록 설정
// 반대되는 조건에서는 1을 리턴하도록 설정함.
// 같을때는 0 리턴
Arrays.sort(numbers2,new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
int i = 0;
int num1 = Integer.parseInt(o1+o2);
int num2 = Integer.parseInt(o2+o1);
if(num1 > num2) {
i = -1; //원하는조건 에서 -1 리턴하도록 설정
}else if(num1 < num2) {
i = 1; //반대조건에서 1리턴하도록 설정
}
return i;
}
});
for(String n : numbers2) {System.out.print(n+",");}
//9,5,3,32,30,
'JAVA' 카테고리의 다른 글
[java8] 인터페이스의 변화 - 인터페이스 기본메소드, 스태틱메소드 (0) | 2022.06.13 |
---|---|
[java8] 함수형 인터페이스와 람다 - 메소드 레퍼런스 (0) | 2022.06.13 |
[java8] 함수형 인터페이스와 람다 (0) | 2022.06.13 |
[java8]새로운 날짜와 시간 API (0) | 2022.06.13 |
[lombok] 롬복 - @Slf4j 로 log 출력 (0) | 2022.03.15 |
Comments