Language/Java 6

[JAVA] Map.Entry

Map.Entry 정리 코테 귤 고르기 풀이 도중 각 귤 별 크기에 따른 갯수를 저장할 컬렉션이 필요했고, key-value 쌍으로 저장할 필요성에 따라 HashMap을 사용했다. 하지만 hashMap은 순서가 없으므로 List에 넣어 정렬을 해보려고 했다. 정렬의 기준은 map의 value(귤의 갯수)이었고, Map을 사용한지 오래되어 기억이 안났고, 풀이 후 포스팅에 정리하게 되었다. 정확히는 풀이를 위해 Map을 사용한 것이 아니라 Map을 구성하는 Entry를 순서 정렬이 가능한 리스트에 담아 풀었다. Map.Entry 란 Map.Entry 인터페이스는 Map 인터페이스의 내부 인터페이스(inner interface)를 말한다. Entry는 Key-Value 쌍의 데이터를 정리하여 다루기 위해 내..

Language/Java 2023.04.21

[JAVA] 스트림(Stream) - 가공

자바 스트림이 생성되었다면 다음과 같은 중간 처리 혹은 가공 과정을 통해 우리가 원하는 결과값을 도출해내야 한다. 이 작업은 다시 Stream을 리턴하므로 여러 작업을 붙여(chaining) 복합적으로 사용할 수 있다. filter peek map sorted 위의 대표적인 처리 과정들을 하나씩 알아보자. Filter Filter 메소드는 스트림 요소(Collection)들을 필터링하기 위해 사용된다. 내부적으로는 Predicate를 사용하고 있으며 True 혹은 False로 리턴되는 조건을 입력하므로써 여과시켜주는 기능을 한다. ArrayList alphabet = new ArrayList(Arrays.asList("a", "b", "c")); alphabet.stream() .filter("b"::e..

Language/Java 2023.03.10

[JAVA] 스트림(Stream)

스트림(Stream)은 Java 8 버전에서 추가된 기능으로 람다를 활용할 수 있는 기능을 말한다. 기존에는 배열과 컬렉션 프레임워크를 다루기 위하여 for문과 foreach 등을 이용했지만 스트림이 추가됨으로써 배열과 컬렉션을 조합하여 원하는 결과를 바로 얻을 수 있다. 함수형 프로그래밍이기 때문에 비교적 간결하고 가독성이 좋아진다는 특징이 있고, 쉬운 병렬 처리를 수행할 수 있다. 또한, 최근 부각되고 있는 reactive programming에서 사용되는 reactor를 잘 사용하기 위해 스트림에 대한 이해가 필요하기 때문에 중요하다고 할 수 있다. 여기서 Reactor는 Reactive Streams 명세를 기반으로 하는 non-blocking 앱을 개발하기 위한 자바 라이브러리를 말한다.(Spr..

Language/Java 2023.03.03

[Java] Static, Heap, Stack

메모리 메모리는 cpu에서 연산을 할 때 각 값들을 저장하는 역할을 합니다. 각 영역이 정해져있으며 특정 주소를 가지고 있습니다. cpu는 연산에 필요한 영역의 값을 불러와 연산을 처리하고 난 후 메모리에 다시 연산된 값을 넣는 과정을 반복할 것입니다. 자바의 메모리 자바에서는 이 메모리를 Static, Heap, Stack 공간으로 나누어 사용합니다. 버전별 java 기본 stack size가 다른 것 같다. http://xmlandmore.blogspot.com/2014/09/jdk-8-thread-stack-size-tuning.html https://www.baeldung.com/jvm-configure-stack-sizes 자바의 메모리 영역을 예를 들어 이해해봅시다. 예로 어떤 것을 들지 생각..

Language/Java 2022.10.18

JAVA - Enum 파헤치기

Enum이 궁금한 이유. -> 과제 프로젝트를 하면서 각 기능들에 대한 테스트를 진행 중이었다. 그러던 중 postman의 너저분한 trace 보고는 `와.. 이건 아니지..`라는 생각이 들었고, exceptionHandling을 하고 싶어 졌다. Exception 발생에 대한 핸들링을 하기 위해서 나만의 에러코드와 메세지 그리고 어떻게 리턴해줄 것인가에 대한 생각을 해봐야겠다고 생각을 했고, 에러 코드와 같이 정해져있어야 하는 상수같은 값을 Enum 열거형으로 만들어야 겠다?(사용하시는걸 보고 따라해봐야겠다)라고 생각했다. 자바 공부할 때 간단하게 보고 넘어갔지만 더 좋은 활용을 위해서는 공부를 왜 쓰는지에 대해 하는 것이 좋겠다고 판단하여 포스팅을 해본다. Enum Enum은 Enumerated Ty..

Language/Java 2022.07.26

JVM 정리하기!

JVM이란? JVM은 Java Virtual Machine의 줄임말로 자바를 실행하기 위해 필요한 가상 머신을 말한다. Java의 특징으로 OS에 종속적이지 않은데 이는 Window든 Mac이든 Linux계열이든 상관없이 각 OS 에 맞는 플랫폼 JVM만 존재한다면 마치 가상 컴퓨터를 사용하듯 java class 파일들을 사용할 수 있는 것이다. JVM은 OS로부터 우리가 사용하고 싶은 프로그램이 필요로하는 메모리를 할당 받고 자바 파일이 compiler에 의해 자바 바이트 코드로 변환된 다음 클래스 로더를 통해 로딩되어 수행이 이루어지게 된다. 이 와중에 GC(Garbage Collection)같은 메모리 효율을 높이기 위한 작업을 수행하고, 각 해석된 자바 바이트 코드는 런타임 데이터 영역에 배치되게..

Language/Java 2022.07.24