재밌고 어려운 IT를 이해해보자~!

정렬, 비교, 람다 본문

교육전 개인공부

정렬, 비교, 람다

언제나즐거운IT 2023. 10. 25. 23:09

배열을 정렬할때는 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