토마토의 개발일지
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • Development (144)
      • Languege (39)
        • Java & Spring (27)
        • C# & ASP.NET (5)
        • JavaScript (2)
        • Kotlin (5)
      • DB (0)
        • Oracle (0)
      • Study (72)
        • 네트워크 (3)
        • 이펙티브 자바 (41)
        • 우아한 테크 코스 (7)
        • Next Step (3)
        • Certificate (5)
        • Side Proejct (6)
      • Error (18)
        • 개발환경 (10)
        • 트러블슈팅 (6)
      • Algorithm (12)
      • 개발환경 (1)
      • 회고 (2)
  • 홈
  • 태그
  • 방명록
Languege/Java & Spring

[Java] jdk 17 - toList의 함정

🎈 개요위 코드에서 단순히 Member를 만들고, List에 담아 stream을 통해 뭔가 처리 한 뒤에 toList로 다시 변환한다.변환된 List에 add를 하면 어떤 일이 발생할까?보기에는 큰 문제가 없어 보인다. 하지만 jdk 17에서 어떤식으로 변화했는지 유심히 살펴보지 않았다면  큰 문제로 이어진다.결론부터 보자면 아래와 같다. (java.lang.UnsupportedOperationException - UOE 발생!!!) ❓ 왜 이런걸까?stream 인터페이스의 toList() 메소드를 확인해보자. default로 선언된 toList()는 기본적으로 Collections.unmodifiableList 을 호출하는데 불변리스트를 호출하는 것 이다. 그럼 해당 메소드의 호출 부분을 더 보자여기..

2024. 11. 14. 18:02
Study/이펙티브 자바

[Effective Java] 스트림 병렬화는 주의해서 적용하라

💥 개요 자바에서 동시성 프로그램을 작성하기가 점점 쉬워지고 있지만, 이를 올바르고 빠르게 작성하는 일은 어렵다. 동시성 프로그래밍을 할 때는 안정성(safety)과 응답 가능(liveness) 상태를 유지하기 위해 애써야 하는데, 병렬 스트림 파이프라인 프로그래밍에서도 다를 바 없다. ☠️ 스트림을 잘못 사용하는 예 아이템 45에서 다룬 메르센 소수를 생성하는 프로그램을 살펴보자 public class MersennePrimes { static Stream primes() { return Stream.iterate(TWO, BigInteger::nextProbablePrime); } public static void main(String[] args) { primes().map(p -> TWO.pow(..

2024. 2. 21. 18:55
Languege/Java & Spring

Stream 사용법

💥 개요 우테코 3주차 코드리뷰 진행 중 Lotto를 파라미터로 받은 개수만큼 새로운 객체를 생성하는 코드를 만드는데, 더 좋은 코드를 추천해주셔서 Stream의 활용과 심화에 대해 알아야겠다. 라고 생각했다. 1. Stream 생성하기 Java에서 Stream을 생성하는 방법은 다양합니다. 컬렉션, 배열, 특정 범위의 숫자 등에서 Stream을 생성할 수 있습니다. List list = Arrays.asList("a", "b", "c"); Stream stream = list.stream(); 2. Stream 가공하기(중간연산) Stream을 가공하는 중간 연산에는 여러 가지가 있습니다. 이들은 Stream을 변형하지만, 최종 연산이 호출되기 전까지는 실행되지 않습니다. [ 필터링 - Filter ]..

2023. 11. 15. 17:32
  • «
  • 1
  • »

공지사항

  • GitHub & WorkSpace

전체 카테고리

  • Development (144)
    • Languege (39)
      • Java & Spring (27)
      • C# & ASP.NET (5)
      • JavaScript (2)
      • Kotlin (5)
    • DB (0)
      • Oracle (0)
    • Study (72)
      • 네트워크 (3)
      • 이펙티브 자바 (41)
      • 우아한 테크 코스 (7)
      • Next Step (3)
      • Certificate (5)
      • Side Proejct (6)
    • Error (18)
      • 개발환경 (10)
      • 트러블슈팅 (6)
    • Algorithm (12)
    • 개발환경 (1)
    • 회고 (2)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #제네릭
  • #백엔드
  • #구글 클라우드
  • #이펙티브 자바
  • #effective java
  • #트러블슈팅
  • #도메인 주도 개발
  • #우테코
  • #BOJ
  • #이펙티브자바
  • #kotlin
  • #클라우드
  • #saa
  • #백준
  • #GCP
  • #Java
  • #파이썬
  • #스프링부트
  • #spring boot
  • #객체지향
  • #개발자
  • #TDD
  • #김영한
  • #코틀린
  • #스프링
  • #spring
  • #자바
  • #김영한 스프링
  • #AWS
  • #후기
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 토마토의 개발일지 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바