[ITWILL : JAVA]람다식개념, 인터페이스 Comparator
💡 핵심 요약 (TL;DR)
람다식개념, 인터페이스 Comparator의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다. * 함수형 프로그래밍개념에서 : 메서드(특정객체가 수행하는 기능) vs 함수(특정 객체에 속하지않는 기능)을 적용할 수 있다.
ITWILL학원 : 21강 JAVA BY 윤미영강사
1. 람다식
자바 8에서 추가된 가장 큰 특징으로 함수형 프로그래밍 형태를 받아들인 결과
메서드 vs 함수
- 객체지향 프로그래밍개념에서 : 메서드와 함수는 동일하다
- 함수형 프로그래밍개념에서 : 메서드(특정객체가 수행하는 기능) vs 함수(특정 객체에 속하지않는 기능)
람다식을 쓰는 이유 : 코드가 간결해짐.
람다식 사용가능한 곳 :
- 함수형 인터페이스 중 익명클래스를 사용한 부분만 람다식으로 대체해서 사용가능.
- 함수형 인터페이스가 뭘까?
- 함수형 인터페이스 : 인터페이스 중에서 한 개의 abstract메서드를 가진 인터페이스
사용법 :
1 | //기본 람다식 |
- 이클립스 단축키 : new연산자의 대괄호{} 전체 선택 후 ctrl + 1 -> convert to lambda expression 를 선택하면 자동으로 람다식을 생성해준다.
2. 인터페이스 Comparator
객체정렬방식 2가지
- Comparable 인터페이스 : 정렬 대상 클래스를 자바에서 기본적으로 제공하고 있는 Comparable 인터페이스를 구현하도록 변경
- 만약 이미 존재하고 있는 정렬 기준과 다른 정렬 기준으로 정렬을 하고 싶을 때는 어떻게 해야할까?
- Comparator 인터페이스 : 정렬 기준을 누락된 클래스의 객체나 기존 정렬 기준을 무시하고 새로운 정렬 기준으로 객체를 정렬가능.
데이터타입별 비교방법
- int 데이터타입은 부등호로 서로 비교가능
- String은 부등호로 비교가 안됨 => compareTo()메서드사용해서 비교해야함
int compare(T o1, T o2) : Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
- 리턴값이 -1이면 위치가 앞으로 , 0이면 가만히, 1이면 뒤로
- o1 > o2 : negative integer
- o1 = o2 : zero
- o1 < o2 : positive integer
1 |
|
- Comparator 객체는 메서드가 하나 뿐인 함수형 인터페이스를 구현하기 때문에
람다 함수로 대체가 가능. - 기존에 있던
new Comparator<Person>() { @Override public int compare를 화살표로 대체해주면 람다식완성. - 데이터 타입도 지울 수 있다 : (Person o1, Person o2) -> (o1, o2)로 가능.
1 | //7-4. 이름순으로 정렬하기(람다식 사용) |
참고링크 : Comparable과 Comparator
참고링크 : 객체 정렬하기 1부 - Comparable vs Comparator
[ITWILL : JAVA]람다식개념, 인터페이스 Comparator