# Collectors

7개의 포스트
post-thumbnail

코테입문 - 모스부호 (1) & StringBuilder/Buffer 개념

StringBuilder, StringBuffer, String StringBuilder, StringBuffer 와 String의 차이는 mutable여부이다. 먼저 String은 immutable 특성을 가지는데 이 말은 한번 할당된 메모리 공간이 변하지 않는다는 것을 뜻한다. +연산자나 concat으로 문자열을 붙이면 실제로는 기존 문자에 새로운 문자를 붙이지 않고 새 String 객체에 붙인 문자열을 저장하고 그 객체를 참조하도록 한다. 그렇기에 성능이 구리다. 반면 StringBuilder와 StringBuffer는 mutable 특성을 가지며 기존 문자열의 공간이 부족한 경우 기존 Buffer의 크기를 늘리며 유연하게 동작한다. StringBuilder와 StringBuffer의 차이는 동기화 여부이다. StringBuilder는 동기화가 보장되지 않아서 단일 스레드 환경에서 사용하고, StringBuffer는 동기화가 보장되어서 멀티 스레

2023년 5월 27일
·
0개의 댓글
·

[뉴스 APP] 데이터를 DTO로 반환하기

데이터를 프론트엔드(클라이언트)로 보낼 때 엔티티 타입으로 보내는건 바람직하지 않다. 이유는 여러가지가 있다. API 스펙, 데이터 유실, 원치 않는 데이터 전송, 엔티티 수정 불가 문제... etc 따라서, 엔티티 대신 DTO 객체를 만들고 API 스펙에 맞게 보내주는게 더 좋은 방안이다. 컨트롤러에서 엔티티 -> DTO로 변환하기 엔티티 값을 DTO로 변환해서 반환하는 방법은 여러가지겠지만, 얼마전에 배운 stream(), map() 메서드가 떠올라서 바로 적용해봤다. JPA는 엔티티로 소통하기 때문에 값을 저장하거나, 값을 가져올 때 반드시 엔티티로 접근해야 한다. 그래서, 따로 DTO로 변환을 하는 작업이 필요하다. 컨트롤러에서 DTO로 변환해준 이유 비즈니스 로직에서 DTO로 값을 반환해주게 되면 반환 스펙이 정해져버려서 나중에 API 스펙이 변경되었을 때 확장하는데 어려움이 있다고 판단했다.

2023년 5월 3일
·
0개의 댓글
·

JAVA__54_Stream_4_List

main문 List + for문 Stream

2023년 3월 10일
·
0개의 댓글
·
post-thumbnail

[코딩테스트 #42] 폰켓몬

문제 설명 >당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. > 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫 번째(3번), 네 번째(3번) 폰켓몬을 선택 두 번째(1번), 세 번째(2번) 폰켓몬을 선택 두 번째(1번), 네 번째(3번) 폰켓몬을 선택 세 번째(2번), 네 번째(

2023년 2월 28일
·
0개의 댓글
·
post-thumbnail

Java - collect() & Collectors

collect() & Collectors collect() 스트림 최종 연산 collect() 는 Collector 를 매개변수로 하는 스트림의 최종 연산 최종 연산 collect() : 그룹별 리듀싱 reduce() : 전체 리듀싱 Collector 인터페이스 수집 (collect) 에 필요한 메서드를 정의해 놓은 인터페이스 직접 구현하는 일이 거의 없다 (Collectors 클래스 사용) Collectors 클래스 다양한 기능의 컬렉터(Collector 를 구현한 클래스) 를 제공 변환 mapping() toList() toSet() toMap() toCollection() 통계 counting() summingInt() averagingInt() maxBy() minBy() summarizingInt() 문자열 결합

2022년 6월 18일
·
0개의 댓글
·

요소들을 그룹화하는 Collectors.groupingBy()

Collectors (Java Platform SE 8 ) (oracle.com) 공통 사항 T 타입 요소들을 classification function(classifier)에 따라 group화한 결과를 Map으로 담음 classification function은 요소들을 K 타입으로 맵핑 collector는 classification function을 적용한 결과에 따라 요소들을 Map 형태로 그룹화 parallel stream에서 사용할 시, 각 map의 key를 merging해야 함 (expensive) 꼭 Map 결과가 필요한 게 아니라면, groupingByConcurrent를 이용하는게 낫다 Type Para

2022년 3월 6일
·
0개의 댓글
·

Collector, Collectors

Collector java.util.stream.Collector Collector (Java Platform SE 8 ) (oracle.com) 요소들을 가변 결과 컨테이너에 담는 가변 *reduction operation Interface 모든 요소들이 처리된 후, 담긴 결과를 최종 자료형으로 변환할 수도 있다 순차적 또는 병렬적으로 실행될 수 있다 Stream.collect(Collector collector) 형태로 사용해서 stream의 최종 처리를 결정할 수 있다 *reduction operation: 요소들을 하나의 결과물로 축소하는 것 [java.util.stream (Java Platform SE 8 ) (oracle.com)](https://docs.oracle.com/javase

2022년 3월 6일
·
0개의 댓글
·