본문 바로가기

프로그래밍/JAVA 내용정리13

[JAVA] orElse와 orElseGet의 차이 0. 개요 최근 요구사항이 새로 들어오면서 코드를 수정해야할 일이 생겼다. 로직을 작성하던 중에 Stream을 사용했다. 그러나 코드를 작성하고 나서 실행 시켰을 때 NullPointException이 발생하는 현상이 발생했다. 스트림을 사용하면서 사용한 메서드들은 filter(), findFirst(), orElseGet() 이렇게 3가지를 사용했다. 1. 문제 정의 디버깅을 하면서 살펴본 결과 orElseGet()이 실행되면서 NullPointException이 발생했다. 원인을 짐작해보건데 내가 코드를 작성하면서 orElse와 orElseGet에 대한 이해도가 높지 않아 ()안에 null을 넣으면서 발생한 이슈라고 판단된다. 2. 각 메서드 개념 정리 해결방법은 간단하다 orElse와 orElse.. 2023. 6. 8.
[JAVA] Stack Frame이란?.. 오늘의 주제 JAVA의 Stack Frame이란? 목차 0. 개요 1. JVM의 동작 방식 2. Stack Frame에 대한 정리. 0. 개요 이전글 "JAVA는 Call by Value일까요? Call by Reference일까요?" 를 작성하면서 Stack Frame이라는 개념을 접했었어요. 누군가 나에게 "Stack Frame이 무엇인가요?" 라고 질문했을 때 명쾌히 "A는 B야. 왜냐하면~~~" 이라고 설명 할 수 없을 것 같아서 이렇게 글을 작성해요. 이번 글에서는 Stack Frame....(음 자바에서는 primitive한 변수들은 stack이라는 메모리 영역에 저장한다고 하는데...)이 무엇인지를 자바 메모리 구조와 더불어 알아 볼 거에요. 1. JVM(Java Virtual Machine.. 2023. 6. 4.
[JAVA] JAVA는 Call by Value일까요? Call by Reference 일까요? 오늘의 주제 JAVA는 Call by Value일까요? Call by Reference일까요? 결론 부터 말씀드리면 JAVA는 Call by Value방식입니다. 목차 0. 개요 1. Call by Reference는 무엇일까? 2. Call by Value는 무엇일까? 3. Call by Reference와 Call by Value는 뭐가 다르지? 4. JAVA는 Call by Reference일까? Call by Value일까? 5. 요약 및 정리 0. 개요 필자는 오늘 문득 친구에게서 JAVA는 Call by value일까? Call by reference일까? 질문을 받았어요. 질문을 받았을 때에는 JAVA는 두 가지 방법을 다 쓰는게 아닐까? 생각했어요. 그리고 지금까지는 그렇게 믿고 있었구요... 2023. 5. 28.
[ModernJavaInAction] 7장 병렬스트림 정리 2편 이 글은 ModernJavaInAction이란 책을 읽고 요약 정리한 글 입니다. 모든 실습 코드는 아래 주소에 있습니다. https://github.com/jojojojocho/mordernjavainaction GitHub - jojojojocho/mordernjavainaction: 모던자바인액션 연습코드 모던자바인액션 연습코드. Contribute to jojojojocho/mordernjavainaction development by creating an account on GitHub. github.com 1편에 이어서 자바 7부터 병렬화 처리를 쉽게 하도록 도와주는 포크 / 조인 프레임워크 대해 알아 보도록 하죠. 포크 / 조인 프레임 워크 포크 / 조인 프레임 워크는 병렬화 할 수 있는 메.. 2022. 10. 11.
[ModernJavaInAction] 7장 병렬스트림 정리 1편 이 글은 ModernJavaInAction이란 책을 읽고 요약 정리한 글 입니다. 모든 실습 코드는 아래 주소에 있습니다. https://github.com/jojojojocho/mordernjavainaction 안녕하세요!! 이번 장에서는 스트림의 성능을 좀 더 개선할 수 있는 방법 중 하나인 병렬스트림에 대해서 알아보겠습니다. 7장 병렬 스트림 병렬 스트림이란? 데이터를 각각의 스레드에서 처리 할 수 있도록 스트림 요소를 여러개의 청크로 분할한 스트림 입니다. 그러나 무턱대고 순차로직을 병렬화 하게 되면 race condition 문제가 발생할 수 있습니다. ** race condition(경쟁상태) 둘 이상의 입력 또는 조작의 타이밍이나 순서가 예상과 다르게 작동하면 정상적인 결과가 나오지 않게 .. 2022. 10. 10.
[MordernJavaInAction] 6장 스트림으로 데이터 수집(Stream Collector) 2편. 이 글은 MordernJavaInAction이란 책을 읽고 요약 정리한 글입니다. 6장 1편에 이어서 진행되는 글 입니다. - 데이터 분할 Collectors.partitioningBy() 분할은 분할 함수(partitioning function) 이라 불리는 Predicate를 분류함수로 사용하는 특수한 그룹화 기능입니다. 분할 함수는 불리언을 반환하므로 맵의 키는 Boolean 타입인 true, false 딱 2종류로만 분할이 됩니다. (다중 분류는 groupingBy를 사용해야 합니다.) - 분할의 장점 참과 거짓 두가지 요소의 스트림 리스트가 모두 유지 됩니다. (true에 해당하는 데이터가 없더라도 리스트는 유지됨.) 그럼 예제코드로 살펴보시죠. /** * 6.4 분할 - partitioning.. 2022. 10. 3.
[MordernJavaInAction] 6장 Collectors 클래스의 정적 팩토리 메서드 사용법 예제 모음. 이 글은 ModernJavaInAction이란 책을 읽고 요약 정리한 글 입니다. /** * 표 6-1 Collectors 클래스의 정적 팩토리 메서드 사용법 예제 - toList() * 스트림의 모든 항목을 리스트로 수집 */ @DisplayName("toList 사용법") @Test public void usingToList() { // when List toList = menu.stream().collect(toList()); // then System.out.println(toList); // [pork, beef, chicken, french fries, rice, season fruit, pizza, prawns, salmon] Assertions.assertThat(toList.size()).. 2022. 10. 3.
[MordernJavaInAction] 6장 스트림으로 데이터 수집(Stream Collector) 1편. 이 글은 ModernJavaInAction 이란 책을 읽고 정리한 글 입니다. 안녕하세요. 저번 글에서는 스트림의 활용에 대해서 알아 보았는데요. 이번글에서는 스트림의 Collectors의 대해 알아보고자 합니다. 스트림에 대해서 궁금하신 분들은 이전 글들을 참고해주세요~ https://jojoplot2.tistory.com/entry/JavaInAction-%EC%8A%A4%ED%8A%B8%EB%A6%BCStream [ModernJavaInAction] 4장 스트림(Stream) 이 글은 모던 자바 인 액션이라는 책을 읽고 스스로 내용을 정리하여 작성 한 글입니다. 모든 실습 코드는 아래 주소에 있습니다. https://github.com/jojojojocho/mordernjavainaction Git.. 2022. 9. 25.
[ModernJavaInAction] 5장 스트림의 활용 이 글은 MordernJavaInAction을 읽고 정리한 글 입니다. 안녕하세요. 저번 글에서는 스트림에 대해서 알아 보았는데요. 이번글에서는 스트림의 활용에 대해 알아보고자 합니다. 스트림에 대해서 궁금하신 분들은 아래 링크에서 읽어보시길 바랄게요~ https://jojoplot2.tistory.com/entry/JavaInAction-%EC%8A%A4%ED%8A%B8%EB%A6%BCStream [ModernJavaInAction] 스트림(Stream) 이 글은 모던 자바 인 액션이라는 책을 읽고 스스로 내용을 정리하여 작성 한 글입니다. 안녕하세요. 오늘은 스트림에 대해서 알아보고자 합니다. 스트림은 JAVA 8 부터 API에 새로 추가된 기능입 jojoplot2.tistory.com 모든 실습 코.. 2022. 9. 12.