java

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter5. 스트림 활용

1. 필터링 프레디케이트로 필터링 스트림 인터페이스는 filter 메서드를 지원한다. filter 메서드는 플레디케이트(불리언을 반환하는 함수)를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); // 채식 요리인지 확인하는 메서드 참조 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다. 리스트의 모든 짝수를 선택하고 중복을 필터링한다. List numbers = Arrays.List(1, 2, 1, 3, 3, 2, 4); numbers.stream() .filter(i -> i..

Book Review/테스트 주도개발 시작하기

[테스트 주도개발 시작하기] Chapter1. TDD 시작(3): 암호 검사기

첫 번째 테스트: 모든 규칙을 충족하는 경우 여기가 중요하다! 첫 번째 테스트를 잘 선택하지 않으면 이후 진행 과정이 순탄하게 흘러가지 않는다. 첫 번째 테스트를 선택할 때에는 가장 쉽거나 가장 예외적인 상황을 선택해야 한다. 암호 검사 기능에서 가장 쉽거나 가장 예외적인 것은 무엇일까? 모든 규칙을 충족하는 경우 모든 조건을 충족하지 않는 경우 모든 조건을 충족하지 않는 테스트: 사실상 구현을 다 하고 테스트를 하는 방식과 다르지 않다. 모든 규칙을 충족하는 경우: 테스트를 쉽게 통과시킬 수 있다. 강함에 해당하는 값을 리턴하면 테스트에 통과할 수 있다. 모든 조건을 충족하는 경우를 먼저 테스트 코드로 작성해보자. @DisplayName("암호가 모든 조건을 충족, 강도는 강함") @Test void ..

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter3. 람다 표현식

1. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다의 특징 익명: 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수: 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 전달: 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성: 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. 람다의 구성 // 기존 코드 Comparator byWeight = new Comparator() { @Override public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWe..

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter2. 동작 파라미터화 코드 전달하기

동적 파라미터화 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 리스트의 모든 요소에 대해서 '어떤 동작'을 수행할 수 있음 리스트 관련 작업을 끝낸 다음에 '어떤 다른 동작'을 수행할 수 있음 에러가 발생하면 '정해진 어떤 다른 동작'을 수행할 수 있음 1. 변화하는 요구사항에 대응하기 기존의 농장 재고목록 애플리케이션에 리스트에 녹색 사과만 필터링하는 기능을 추가한다고 가정하자. 사과 색을 정의하는 Color num이 존재한다고 가정하자. 첫 번째 시도: 녹색 사과 필터링 enum Color { RED, GREEN } public static List filterGreenApples(List inventory) { List result = new ArrayList(); // 사과 누..

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter1. 자바 8, 9, 10, 11: 무슨 일이 일어나고 있는가?

자바8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라는 두 가지 요구사항을 기반으로 한다. 일단 자바 8에서 제공하는 새로운 기술이 어떤 것인지 확인하자. 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 1. 자바 8의 3가지 프로그래밍 개념 스트림 처리 스트림이란? 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 스트림 API의 핵심은 기존에는 한 번에 한 항목을 처리했지만 이제 자바 8에서는 우리가 하려는 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리할 수 있다는 것이다. 또한 입력 부분을 여러 CPU 코어에 쉽게 할당할 수 있다는 부가적인 이득도 얻을 수 있다. 스레드라는 복잡한 작업을 사용하지 않으면서도 공짜로 병렬성을 얻을 수 있다. 동작 ..

백준 오답노트/백트래킹

백준 - 백트래킹 14889번 스타트와 링크 / 풀이, 오답

= 내가 접근한 방법 = 처음 작성한 dfs 함수다. 이 메서드의 문제점은 2개까지는 구할 수 있어도 => n = 4일 때만 가능하고 n = 6일 때 부터 불가능했다. n = 6일 때, 1-2-3 vs 4-5-6 이렇게 팀을 이루는 건데 내가 짠 함수로는 1-2, 3-4, 5-6 이런 식으로 진행이 되기 때문에 당연히 오답. public static void dfs(int n, int depth) { // System.out.println("depth = " + depth); if (depth == n / 2) { for (int i = 0; i < depth; i++) { System.out.println("result: " + temp[i]); } int check = Math.abs(temp[0] ..

초보병일이
'java' 태그의 글 목록