본문 바로가기

Java

(12)
스트림 활용 정리 1. 필터링 1.1 프레디케이트로 필터링 filter 의 인수로 프레디케이트를 받는 방법이 있다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); 1.2 고유 요소 필터링 스트림은 고유 요소르 이루어진 스트림을 반환하는 distinct 메서드도 지원한다. List numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream .filter(i -> i % 2 == 0) .distinct() .forEach(System.out::println); 위 코드는 filter 를 통해 2, 2, 4 요소들이 필터링되고 distinct() 를통해 2, 4 만 전달이 된..
스트림 기본 정리 1. 스트림은 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 사용하면 다음과 같은 이점이 있다. 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 선언형으로 코드를 구현 할 수 있다. 즉, 루프와 if 조건문 등의 제어 블록 없이 원하는 로직을 만들어 낼 수 있다. 여러 빌딩 블록 연산을 연결할 수 있다. 예)filter 연산 후 sorted 연산 후 map 연산을 하는 파이프라인을 만들 수 있다. 스레드와 락을 걱정할 필요가 없다. 요약: 스트림은 더 간결하고 가독성이 높아지고 유연성이 좋고 성능이 좋다 2. 컬렉션과 스트림 컬렉션과 스트림 사이에는 다음과 같은 차이점이 있다. 컬렉션 스트림 데이터를 언제 계산하는지 적극적 생산 (현재 자료구조가 포함하..
Optional 체스를 구현하던중 Optional 에 대해서 알게 되었다. Optional 의 등장배경Optional 은 null 로 인해 발생하는 문제 때문에 등장하게 되었다.메서드의 반환값으로 null 이 반환될 수 있고, 때문에 에러가 발생될 가능성이 높은 상황이라면 사용하자는 취지이다. 백문이 불여일견코드로 살펴보자. Optional 적용 전체스의 메소드 중 체스판의 좌표(Position)에 해당하는 체스말(Piece)을 찾는 메소드가 있었다.123456public Piece findPieceByPosition(Position position) { return pieces.stream() .filter(x -> x.isEqualPosition(position)) .findAny() .orElse(null);} ..
인터페이스, Interface 코드로 보는 인터페이스의 기능 1. 코드규약 다음 코드를 살펴보자. 먼저 SubjectInterface 라는 인터페이스가 있고, score() 와 getName() 을 추상메소드로 가지고 있다. 1 2 3 4 5 6 package school; public interface SubjectInterface { public int score(); public String getName(); } 다음은 SubjectInterface 인터페이스의 구현이다. 각 과목들은 implements 로 SubjectInterface 를 받고 있기 때문에 'public int score()' 와 'public String getName()' 을 필수로 구현해 주어야 한다. 1 2 3 4 5 6 7 8 9 10 11 pack..