재밌고 어려운 IT를 이해해보자~!
정렬, 비교, 람다 본문
배열을 정렬할때는 for if문을통해서 앞뒤순서를 비교하고 바꿔주는 식으로 했지만
List는다르다!
collection을 이용해 정렬할 수 있다.
package study.code.sort1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
public class ListSortExam02 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
//랜덤 클래스 선언1
Random rand = new Random();
for(int i = 0; i < 10; i++) {
//nextInt(값); 0<= x < 값 +1 --> 1 <= x < 50
list.add(rand.nextInt(50) + 1); //random메서드보다 편하다
}
System.out.println("정렬 전" + list);
//collection 을 이용한 정렬기능
Collections.sort(list);
System.out.println("오름차순 정렬 후" + list);
Collections.sort(list, Comparator.reverseOrder()); // 배열에서 사용했던것처럼 comparator를 이용해 내림차순으로
//정렬할 수 있다.
System.out.println("내림차순 정렬 후" + list);
}
}
클래스에 대해 정렬할 수 있는 방법 2가지.
1. 클래스 내에서 정렬 기능 추가하는 방법.
-> comparable을 상속받아 sort기능을 그대로 사용한다.
->상속할때는 제네릭을 주는편이 좋다.
->제네릭을 주는이유 : 이클래스가 비교해야하는 대상을 외부로부터 제네릭을 통해서 입력받는다.
하나가아닌 여러개를 받는 인터페이스를 선언하는 것이기 때문.
2. 외부에서 정렬 옵션을 가지는 외부 클래스를 만드는 방법.
->Comparator 상속받은 외부 클래스에 메서드를만들어
collection.sort와 메서드를 이용해서 정렬한다
ex) Collections.sort(list, new StdAscCompare());
람다식이란 익명클래스를 사용해 간편하게 만든걸 람다식이라고 부른다!
익명클래스 만들기
CompareMax compareMax = new CompareMax() {
@Override
public int max(int x, int y) {
return x > y ? 1 : x < y ? -1 : 0;
}
};
람다식적용 ----
익명클래스 를 사용해서 간단하게 만드는것이 람다식이다.
CompareMax compareMax = (x, y) -> {return x > y ? 1 : x < y ? -1 : 0;};
'교육전 개인공부' 카테고리의 다른 글
파일 입출력 (0) | 2023.10.28 |
---|---|
쓰레드 (0) | 2023.10.26 |
컬렉션 프레임워크 (2) | 2023.10.23 |
기본 API클래스4 -Wrapper (1) | 2023.10.23 |
기본 API클래스3 - String (0) | 2023.10.22 |
Comments