본문 바로가기

분류 전체보기59

모던 자바 인 액션 스터디 6. 컬렉션 API 개선 파즈 Arrays.asList와List.of 의 차이점은 무엇일까요 ?? map.put과map.replace두메서드 다 값 변경이 가능한데 그렇다면 왜 replace라는 메서드가 따로 있을까요 ?? Map에는 computeIfAbsent이라는 메서드가 존재합니다. 만약 key가 존재하지 않는다면 키를 이용해서 새 값을 계산하고 맵을 추가하는 메서드입니다. 추가로, Map에는 putIfAbsent라는 메서드도 있습니다. 키가 존재 하지 않는다면 value를 바로 집어넣어주는 메서드입니다. public static void main(String[] args) { Map map = new HashMap(); map.put(1, 1); map.putIfAbsent(2, calculate(2)); map.comp.. 2021. 3. 25.
모던 자바 인 액션 스터디 5. 병렬 데이터 처리와 성능 웨지 7장문제 나갑니당~~ 7장 넘 어렵네요 O/X 3개 낼게요 이유도 적어주셔요병렬 스트림 문제 동시성 문제를 해결했다면, 병렬 스트림을 활용하는게 항상 성능적으로 우수하다. 내부적으로 스트림이 분할되는 기준에 대해서는 개발자가 알 수 없다. Spliterator의 Characteristics 옵션은 Collectors의 것과 동일하다 나의 답 더보기 X 그렇지 않다. 원소의 개수가 적을 경우, 병렬 계산을 위한 스래드 생성 비용이 클 수도 있다. X 그렇지 않다. 스트림의 분할 기준은 개발자가 정해서 구현한다(기본으로는 프로세서 개수 기준이다). X 그렇지 않다. 아쉽게도 둘은 서로 다른 요소를 가지고 있다 웨지의 답 x ,스레드를 스위칭하는 오버헤드가 더 들수도 있다. 벤치마크를 통해 오버헤드에 걸.. 2021. 3. 23.
모던 자바 인 액션 스터디 4. 스트림으로 데이터 수집 웨지 6장 퀴즈 나갑니다아OX퀴즈 5개 할게용 이유도 달아주심 좋아요 GroupingBy를 활용하여 PartitionBy와 동일한 분할을 구현할 수 있다 (O / X) PartitionBy를 활용하여 GroupingBy와 동일한 그룹핑을 구현할 수 있다 (O / X) Collectors의 정적 메소드 counting, summingInt, maxBy, minBy는 요소가 없을 경우 0을 반환한다. (O/X) 내 상황에 적합한 Collector 정적 메소드가 없을 경우엔 Collector인터페이스 구현체를 집적 구현하는 방법 밖에 없다. (O/X) 병렬 스트림인 경우 Collect도 항상 병렬 리듀싱을 실행한다. (O/X) 나의 답 더보기 1. O, groupingBy(i -> 조건식) 으로 같은 기능을 .. 2021. 3. 14.
객체지향의 "책임"의 함정에 빠지지 말자. 우테코의 블랙잭 미션을 진행하면서 피드백을 받은 부분이 있다. 먼저, 요구사항을 말하자면, 플레이어는 카드를 가지고 있고, 플레이어에게 점수를 요청하면 카드의 번호를 확인하여 점수를 계산하고 반환하는 구현이다. 기존의 나의 코드는 Player 클래스가 Deck클래스를 가지고 있고, Deck 클래스에게 카드 정보를 요청해서 점수를 Player가 계산해서 반환하도록 하였다. 아래와 같은 형식이다. 이러한 구조를 선택한것에는 큰 착각이 있었다. 객체의 책임과 역활을 생각하다 보니. "어쩌피 실제에서도 플레이어가 점수 계산하지 않나? 그러면 점수 계산의 책임을 플레이어에게 줘도 되겠군!" 이라는 생각을 해버리고 만 것이다. 하지만 객체지향에서 객체는 자율적인 존재이다 (의인화). 또한 객체지향의 기본 원칙인 캡.. 2021. 3. 9.