2020-05-27 TIL

Facts

  • 알고리즘 문제 이상한 문자 만들기, 자연수 뒤집어 배열로 만들기, 자릿수 더하기 문제를 풀었다. 1렙은 이제 눈 감고 풀 수 있다. 하루에 3문제씩 1렙을 마저 풀어야겠다.
  • 인터페이스 부분을 코드를 따라치면서 javaScript에서 사용하던 함수들이 java에도 많이 있다는 것을 확인했다. 물론 쓰는 방법은 다르지만 기능 자체는 같다는 것을 알고 따라 쳐보았다.

Feelings

  • 책에 생략된 부분이 많아서 따라치는데 곤란한 부분이 많았는데, GitHub에 챕터마다 완성된 코드들이 올려져 있는 걸 오늘 확인하고 책이랑 같이 보면서 코드를 다시 작성하니까 그전보다 훨씬 이해하기 수월해졌다.
  • 처음엔 답도 없었는데 그래도 처음보다는 어디에 사용해야 할지 감이 잡히기 시작한 것 같다고 느꼈다.

Findings

  • 클래스는 인터페이스를 몇 개든 구현할 수 있다. ex) implemnets 1, 2
  • 인터페이스에 정의한 변수는 항상 public static final이 된다.
  • 인터페이스에 있는 어느 메서드에서든 기본 구현을 작성할 수 있다. 기본 메서드에는 반드시 default 제어자를 붙여야 한다.
  • Runnable이나 Comparator처럼 액션을 표현하는 인터페이스가 많다. 람다 표현식은 이런 인터페이스와 호환된다. 람다 표현식은 단일 추상 메서드를 가진 인터페이스(즉 추상 메서드가 한 개만 있는 인터페이스) 자리에 사용할 수 있다. 이런 인터페이스를 함수형 인터페이스라고 한다.
  • 배열 sort 하는 방법
Arrays.sort(배열, String:compareToignoreCase)
;
Arrays.sort(배열, (x, y) -> x.compareToignoreCase(y));
  • 배열 안의 null 값을 모두 제거
list.removeIf(Object::isNull);
  • forEach를 이용한 리스트 요소 출력
list.forEach(x -> System.out.println(x));
list.forEach(System.out::println);
  • ::연산자는 클래스 이름과 메서드 이름을 분리하거나 객체의 이름과 메서드 이름을 분리한다.
string::compareToignoreCase
(x, y) -> x.compareToIgnoreCase(y)
는 같다.

Future Action Plan

  • GitHub에 나와있는 코드랑 책이랑 같이 비교하면서 직접 코드를 쳐보면서 암기한다는 마인드로 공부해야겠다.