02-03 학습! 2월의 시작! 🫢
크기를 비교할 수 있는 요소 + 방향
List, Set-SortedSet, Map-SortedMap
public class SmartPhone implements Comparable<SmartPhone>
String number;
@Override
public int compareTo(SmartPhone o){
return this.number.compareTo(o.number)
양수 : 자리바꿈
음수 : 자리유지
0 : 동일 위치
항상 Comparable interface 만 사용해서 계속 재정의 해줘야 하나..
Comparator! 객체가 Comparable을 구현하고 있지 않거나 사용자 정의 알고리즘으로 정렬하려는 경우
public class StringLengthComparator implements Comparator<String> {
🚨 anonymous inner class 사용법 숙지!!
함수적 프로그래밍의 형태로 재사용 가능한 코드 블록
anonymous 방식을 한 줄로 줄여줌!!
반드시 지켜야 할 조건
🚨 타겟 타입은 abstract 메서드가 반드시 하나만 존재!! (default, static등은 무관)
이걸 계속 생각해야 해..?
🔔 @FunctionalInterface 어노테이션 장착해서 컴파일러가 체크해줌!
abstract method 2개 이상 존재하면 익명의 inner class 사용
구현법 => (type variable_name[,,,,] -> {실행문;};
1. (String str) -> {System.out.println(str);};
2. (str) -> {System.out.println(str);};
3. str -> System.out.println(str)
4. num -> {
System.out.println(num);
return num* 2;
5. num -> num*2
계속 발전해짐!
-> 다음에 실행코드블럭 온다고 생각하면 편할 듯!
🔔 Lambda 식 내부에서의 this는 외부 클래스의 instance
외부 클래스의 member 변수 : 접근제한자의 제약 없이 사용 가능
외부 메서드의 local 변수 : final 키워드가 추가된 것으로 동작 -> read only