컬렉션 팩토리 작은 컬렉션 객체를 쉽게 만들 수 있는 방법 List friends = Arrays.asList("Raphael", "Olivia", "Thibaut"); 요소를 갱신할 순 있지만 추가하거나 삭제하려면 UnsupportedOperationException이 발생한다. 내부적으로 고정된 크기의 변환할 수 있는 배열로 구현되었기 때문에 이와 같은 일이 일어난다. 리스트 팩토리 List.of 팩토리 메소드를 이용해서 간단하게 리스트를 만들 수 있다. List friends = List.of("Raphael", "Olivia", "Thibaut"); List.of 으로 만든 리스트에 수정 또는 삭제를 할 때 UnsupportedOperationException이 발생한다. 컬렉션 팩토리 메서드 대..
컬렉터란 무엇인가? 고급 리듀싱 기능을 수행하는 컬렉터 훌륭하게 설계된 함수형 API의 또 다른 장점으로 높은 수준의 조합성과 재사용성을 꼽을 수 있다. collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있다는 점이 컬렉터의 최대 강점이다. collect 에서는 리듀싱 연산을 이용해서 스트림의 각 요소를 방문하면서 컬렉터가 작업을 처리한다. Collectors 유틸리티 클래스는 자주 사용하는 컬렉터 인스턴스를 손쉽게 생성할 수 있는 정적 팩토리 메서드를 제공한다. 미리 정의된 컬렉터 Collectors에서 제공하는 메서드의 기능은 크게 세가지로 구분 스트림 요소를 하나의 값으로 리듀스하고 요약 요소 그룹화 요소 분할 리듀싱과 요약 컬렉터 (Stream.collect 메서드의 ..
필터링 Predicate로 필터링 스트림 인터페이스 중 filter 메서드는 Predicate(불리언을 반환하는 함수)를 인수로 받아서 Predicate와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) //채식 요리인지 확인하는 메서드 참조 .collect(toList()); 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다. List numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream() .filter(i -> i%2 ==0) .distinct() .forEach(System.ou..
스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 일단 스트림이 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 스트림을 병렬로 처리할 수 도 있는데 이건 내가 잘 이해를 못하고 일하는 환경에서의 필요성을 아직은 잘 못느껴서 나중에 정리 기존 코드와 자바8 스트림을 활용한 코드를 비교 // JAVA8 이전 public static List getLowCaloricDishesNamesInJava7(List dishes) { List lowCaloricDishes = new ArrayList(); //가비지 변수 즉, 컨테이너 역할만 하는 중간변수이다. 오직 정렬 연산을 위해 필요한 변수 for (Dish d : ..
람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수있는 예외 리스트는 가질 수 있다. 커스텀 Comparator 코드와 람다를 이용한 새로운 코드 비교 Comparator byWeight = new Comparator() { @Override public int compare(Apple o1, Apple o2) { return o1.getWeight().compareTo(o2.getWeight()); } }; 람다를 이용한 새로운 코드 Comparator byWeight = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWei..
02. 동작 파라미터화 코드 전달하기 동작 파라미터화 를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 이 코드 블록은 나중에 프로그램에서 호출한다. 즉 코드 블록의 실행은 나중으로 미뤄진다. 변화하는 요구사항에 대응하기 첫 번째 시도 농장 재고목록 애플리케이션에 리스트에서 녹색 사과만 필터링 하는 기능을 추가 public static List filterGreenApples(List inventory){ List result = new ArrayList(); for(Apple apple: inventory){ if("green".equals(apple.getColor())){ result.add(apple..
어제 밤에 코딩하다가 Github에 Push 하고 자야지~ 하고 했는데 Push가 안된다.. 원격 저장소에 권한이 없다고 나오길래 뭔일이지 하면서 구글링 엄청하고 결국 git gc 명령어까지 찾게돼서 해봤는데도 안됨.. 로컬 저장소 날리고 다시 clone 하고 막 다 했는데도 안되길래..새벽까지 뭐가 문제지 했는데 알고보니 Github 서버 문제 인것으로 결론이 났다... 늦게잤는데................ㅠㅠㅠ_ㅠㅋㅋㅋㅋㅋㅋ 이건 페북 그룹에 올라온 글.... 아 댓글에 gc 까지 하고 오신분 에서 웃었다..ㅋㅋㅋㅋㅋㅋ 이게 Github에 서버 상태가 문제가 있는지 확인하려면 Github Status 라는 사이트가 있었다.. 여기서 확인하면 된다. https://www.githubstatus.com..
- Total
- Today
- Yesterday
- 베리 심플
- window
- rocky
- Bash tab
- jQuery
- Spring Security
- elasticsearch
- oracle
- maven
- JavaScript
- LocalDate
- Mac
- Linux
- mybatis
- input
- Java
- Kotlin
- localtime
- Spring
- 오라클
- springboot
- svn
- LocalDateTime
- 북리뷰
- mybatis config
- Github Status
- k8s
- config-location
- intellij
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |