람다함수는 익명함수 얘기하는것
익명함수란? "재사용 하지 않고 한번만 사용할 함수"로 함수의 이름을 갖지 않고, 리터럴( Literal ) 방식으로 변수에 담겨 사용하는 함수이다.
람다함수란?
람다식을 사용하기 위해서는 함수적 인터페이스라는 조건을 만족해야 한다.
함수적 인터페이스란 단 1개의 추상 메소드를 정의하고 있는 인터페이스를 말한다.
인터페이스가 2개의 추상 메소드를 가지고 있다면 람다식을 사용할 수 없다.
람다 표현식
1. () -> {}
2. () -> 1
3. () -> { return 1; }
기존자바 문법과 람다식을 비교해봅시다.
기존자바 문법 익명 함수
new Test() {
public int getTest() {
System.out.println("Welcom motji blog");
}
}; // 객체를 생성하는 것이므로 ; 필요
람다식
new Test(()->{
System.out.println("Welcom motji blog");
})
화살표(->)를 통해서
(인터페이스의 추상 메소드에 대한 매개변수) ->
{인터페이스의 추상 메소드에 대한 구현부} 로 표현
Collections.sort(keySetList, (o1, o2) -> (map.get(o2).compareTo(map.get(o1))));
Collection.sort( 대상, 기준 )
java.util.Collections를 import한 후에 sort() = 오름차순 와 reverse() = 내림차
오름차순 한글순 > 소문자 > 대문자 > 숫자
내림차순 숫자 > 대문자 > 소문자 > 한글순
일반적으로 기준을 정하지 않고 그냥 Collections.sort(list)를 하면 오름차순으로 정렬이 된다.
but 다른 기준으로 정렬 하고 싶다면?
comparable은 나(this)를 기준으로 comapreTo 메소드에 상대를 넣어 비교
comparator는 비교대상 2개를 가지고 판단
int compare(T o1, T o2) 로 두 객체의 특정 값을 연산해서 음수가 나오면, o1의 객체가 작다고 판단, 양수가 나오면 o2의 객체가 작다고 판단한다.
1. Comparable 인터페이스
2. Comparator 인터페이스
Collections.sort(list, comparator);
- list의 기준이 아니라 새롭게 매개변수값으로 받은 Comparator 객체를 기준으로 해서 정렬을 실행
- int compare(T o1, T o2); 이 메소드를 통해 두 객체의 특정 값을 연산해서 음수가 나오면 o1의 객체가 작다고 판단하며, 양수가 나오면 o2의 객체가 작다고 판단
//list의 기준이 아니라 새롭게 매개변수값으로 받은 Comparator 객체를 기준으로 해서 정렬을 실행
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.score - s2.score;
}
});
map을 value로 정렬하는 람다식!을 java로 바꾸면!
Collections.sort(keySetList, (o1, o2) -> (map.get(o2).compareTo(map.get(o1))));
Collections.sort(keySetList, new Comparator<KeyType>() {
@Override
public int compare(KeyType o1, KeyType o2) {
return map.get(o2).compareTo(map.get(o1));
}
});
'etc > 코테준비' 카테고리의 다른 글
배열을 List로 List를 배열로 변환 (0) | 2023.12.15 |
---|---|
Map (0) | 2023.10.19 |
map 값 다 꺼내서 출력, map값 정렬 (0) | 2023.10.10 |