자바(46)
-
[모던 자바 인 액션] chap05. 스트림 활용
내용 필터링, 슬라이싱, 매칭 검색, 매칭, 리듀싱 특정 범위의 숫자와 같은 숫자 스트림 사용하기 다중 소스로부터 스트림 만들기 무한 스트림 // 외부 반복 List vegetrianDishes = new ArrayList(); for(Dish d : menu) { if(d.isVegetarian()) vegetrianDishes.add(d); } // 내부 반복 List vegetrianDishes = menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList()); 1. 필터링 1. 프레디케이트로 필터링 filter 메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetr..
2023.03.05 -
[모던 자바 인 액션] chap04. 스트림이란?
내용 스트림이란 무엇인가? 컬렉션과 스트림 내부 반복과 외부 반복 중간 연산과 최종 연산 List lowCaloricDishes = new ArrayList(); for(Dish dish : menu) { if(dish.getCalories() < 400) lowCaloricDishes.add(dish); } Collections.sort(lowCaloricDishes, new Comparator() { public int compare(Dish dish1, Dish dish2) { return Integer.compare(dish1.getCalories(), dish2.getCalories()); } }); List lowCaloricDishesName = new ArrayList(); for(Dish..
2023.03.01 -
[모던 자바 인 액션] chap03. 람다 표현식(2)
람다는 함수형 인터페이스의 인스턴스를 만들 수 있다. 람다 표현식 자체에는 람다가 어떤 함수형 인터페이스를 구현하는지의 정보가 포함되어 있지 않다. 따라서 람다 표현식을 더 제대로 이해하려면 람다의 실제 형식을 파악해야 한다. 람다 표현식의 형식 추론 List heavierThan150g = filter(inventory, (Apple apple) -> apple.getWeight() > 150); // 이 경우, filter 메서드는 Predicate을 기대한다. Object o = (Runnalbe) () -> { System.out.println("Tricky example"); }; // 이렇게 캐스팅 할 수도 있다. List greenApples = filter(inventory, apple -..
2023.02.24 -
[모던 자바 인 액션] chap03. 람다 표현식(1)
람다 표현식 - 메서드로 전달할 수 있는 익명 함수를 단순화한 것 람다의 특징 익명 함수 - 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. 전달 - 람다 표현식은 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 // 기존에 사용하던 코드 Comparator byWeight = new Comparator() { @Override public int compare(Apple o1, Apple o2) { return o1.getWeight().compareTo(a2.getWeight()); } } // 람다를 사용하면 간편해진다. Comparator byWeight = (o1, o2) -> o..
2023.02.21 -
[모던 자바 인 액션] chap02. 동적 파라미터화 코드 전달하기
동적 파라미터화란? - 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록 예제 코드 public static List filterGreenApples(List inventory) { List result = new ArrayList(); for(Apple apple : inventory) { if(GREEN.equals(apple.getColor())) result.add(apple); } return result; } 인터페이스를 구현하는 객체들로 동작파라미터화를 시키면 메서드가 다양한 동작을 받아 내부적으로 다양한 동작을 수행할 수 있다. 색을 파라미터화 public static List filterApplesByColor(List inventory, Color color) { List resul..
2023.02.18 -
[모던 자바 인 액션] chap01. 자바 8에 무슨 일이..?
자바 8이 등장하기 이전에는 병렬처리에 대한 프로그래밍이 쉽지않았다. 스레드를 이용해 병렬 환경을 컨트롤 할 수는 있지만 이것은 전문가가 아니라면 어려운 수준이었다. 하지만 자바8이 나오면서 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공하기 시작했다! 이 책은 그러한 자바8의 새로운 기법을 이용하려면 지켜야 하는 규칙에 대해서 설명한다. 자바8에서 제공하는 새로운 기술 세가지다. 스트림 API : 우리는 스트림을 통해 synchronized를 사용하지 않아도 된다! 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 지금부터 자바8 설계의 밑바탕을 이루는 세가지의 개념에 대해 알아보자. 1. 스트림 처리란? 스트림이란 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다...
2023.02.13