분류 전체보기
우아한 테크코스 한 달 생활기
우아한 테크코스 한 달 생활기 정신없이 과제를 수행하다 보니 한 달 반이나 지나있었다. 정신이 없었던 것이 아니라, 생각 없이 지내온 것이 아닐까 하는 의문이 들었다. 하루하루를 곱씹으면 시간이 잘 가지 않는다. 반면, 아무 생각 없이 지내면 하루가 쏜살같이 지나간다는 것을 살아오면서 배웠다. 괜히 지금까지의 생활을 잘 보냈는지에 대한 불안감이 생긴다. 무엇을 하며 시간을 보냈는가 미션을 진행하며 대부분의 시간을 보냈다. 페어와 함께일 때는 남는 저녁 시간에도 미션에 대해 고민했다. 페어와 깨지고 난 뒤에는 오직 오전과 낮에만 수행했다. 남은 저녁 시간에는 필독서와 미션을 진행하면서 생긴 의문점들을 찾아보고 정리했다. 나름 알차게 보낸 것 같은데 대체 어디서 불안감이 스멀스멀 올라오는 것일까? 내 생활 ..
[Java] try-with-resources 에 대해
try-with-resources 에 대해 try-with-resources 는 손쉽게 자원 할당을 해제할 수 있는 방법이다. 어떻게 사용하는지 바로 확인해보자. private static void printFile () throws IOException { try (FileInputStream input = new FileInputStream ( "file.txt")) { int 데이터 = input.read (); while (데이터! = -1) { System.out.print ((char) 데이터); 데이터 = input.read (); } } } 다음과 같이 사용한다. 기존의 try-catch-finally 였다면 finally 블록을 따로 만들어주고 그 부분에 close 메서드들을 호출했어야 ..
[모던 자바 인 액션 스터디] 8장 컬렉션 API 개선
8. 컬렉션 API 개선 Arrays.asList() 나 List.of 나 추가를 하려고 하면 UnsupportedOperationException이 발생하게된다. Set은 Set.of 로 생성한다. Map은 다음과 같이 2가지 방법이 있다. Map ageOfFriends = Map.of("Raphael", 30, "Olivia", 25); Map ageOfFriends = Map.ofEntries(entry("Raphael", 30), entry("Olivia", 25)); 자바 8에서는 List와 Set 인터페이스에 다음과 같은 메서드를 추가했다. removeIf : 프레디케이트를 만족하는 요소를 제거한다. List나 Set을 구현하거나 그 구현을 상속받은 모든 클래스에서 이용할 수 있다. repla..
[모던 자바 인 액션 스터디] 7장 병렬 데이터 처리와 성능
7장. 병렬 데이터 처리와 성능 컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성된다. public long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .reduce(0L, Long::sum); } n이 커진다면 병렬로 처리하는 것이 좋을텐데 한 번 처리해보자. public long parallelSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .parallel() .reduce(0L, Long::sum); } 순차 스트림에 parallel()메서드를 호출하면 기존의 함수형 리듀싱 연산이 병렬로 처리된다. 순차 스트림에 parallel()을 ..
[Java] Arrays.asList와 List.of의 차이점에 대해
Arrays.asList와 List.of의 차이점에 대해 Arrays.asList와 List.of 둘 다 고정된 크기의 리스트를 제공하기 떄무에 새 요소를 추가하거나 삭제하려고 하면 UnsupportedOperationException이 발생한다. 그렇다면 둘의 차이점은 무엇일까 ?? List.of 는 set으로 값 변경이 불가능하다. List asList = Arrays.asList(1, 2, 3); List listOf = List.of(1, 2, 3); asList.set(0, 10); listOf.set(0, 10); //UnsupportedOperationException List.of는 set으로 값 변경을 시도하면 컴파일 에러가 발생하게 된다. List.of 는 null을 허용하지 않는다. ..
[모던 자바 인 액션 스터디] 6장 스트림 활용
6. 스트림으로 데이터 수집 컬렉터로 스트림의 항목을 컬렉션으로 재구성할 수 있다. long howManyDishes = menu.stream().collect(Collectors.counting()) 다음과 같이 말이다. 물론 이 코드는 menu.stream().count()로 생략할 수 있다. Comparator dishCaloriesComparator = Comparator.comparingInt(Dish:;getCalories); Optional mostCalorieDish = menu.stream().collect(maxBy(dishCaloriesComparator)); maxBy, minBy를 이용해서 스트림의 최댓값과 최솟값을 계산할 수 있다. summingInt는 객체를 int로 매핑하는 ..
[Java] Stream의 distinct()와 sorted() 어느 것부터 먼저 해야할까??
Stream의 distinct()와 sorted() 어느 것부터 먼저 해야할까?? numbers.stream() .distinct() .sorted() .collect(Collectors.toList()); numbers.stream() .sorted() .distinct() .collect(Collectors.toList()); 다음과 같이 위의 두 코드 중 어떤 방식을 선택해야 할까?? sorted()는 흔히 우리가 생각하는 작동방식과 살짝 다르다. List list = List.of(2, 5, 4, 7, 3, 98, 2); List collect = list.stream() .peek(System.out::println) .distinct() .peek(i -> System.out.println("..
[모던 자바 인 액션 스터디] 5장 스트림 활용
5. 스트림 활용 filter 메서드는 Predicate를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. dictinct는 중복을 필터링한다. (고유 여부는 hashCode와 equals로 결정된다) takeWhile 를 이용하면 해당 프레디케이트가 false면 동작을 멈춘다. List filteredMenu = specialMenu.stream() .takeWhile(dish -> dish.getCalories() < 320) .collect(toList()); specialMenu 내부에 칼로리 오름차순으로 정렬이 되어있다면 해당 프레디케이트가 true일 동안만 작동한다. filter 였으면 다 돌았을 것이다. dropWhile은 해당 프레디케이트가 처음으로 거짓이 되..