Java 5

[Java] HashSet의 내부 동작 방식과 중복 제거 메커니즘

WeeklyPaper 주제: HashSet의 내부 동작 방식과 중복 제거 메커니즘을 설명하고, HashSet이 효율적인 중복 체크를 할 수 있는 이유를 설명해주세요. 내부 동작 방식Java의 HashSet은 놀랍게도 HashMap으로 구성이 되어 있다. HashSet을 만들어서 데이터를 추가하고 싶을 때, HashMap의 put메서드를 사용한다 - map.put(element, PRESENT)element = 추가하고 싶은 데이터 (key로 저장됨)PRESENT = HashSet 내부에서 사용하는 고정된 dummy valueprivate static final Object PRESENT = new Object();즉, 실제로 HashMap의 key만 사용하는 구조이다 -> HashSet은 사실상 ke..

Java 2025.06.09

[Java] Stream API의 map과 flatMap의 차이점

map()map()은 각 요소를 변환하여 새로운 요소로 매핑하는 함수이다 (1:1매핑이라고 생각하면 된다).데이터 변환을 하고 싶을 때 사용한다.가장 많이 쓰이는 용도는 Stream이다 - 누군가가 자바의 map()을 언급한다면 Stream API의 map()을 얘기하는 경우가 대부분일 것이다. 간단한 map()과 String의 toUpperCase()를 사용한 코드 예제이다:List namesLower = Arrays.asList("mary", "john", "walt");// Stream API의 map()을 사용해서 대문자로 변환List namesUpper = namesLower.stream() .map(String::toUpperCase) .collect(Collectors.toList())..

Java 2025.06.02

[Java] JVM (Java Virtual Machine) 노트정리

먼저 이 포스트에 간단하게 JVM을 소개 해보았다. 이 글은 JVM에 대해서 조금 더 자세히 다룰 예정이다. 핵심 역할JVM은 .class 파일에 담긴 bytecode를 읽어들여서 현재 실행되고 있는 운영체제가 이해할 수 있는 기계어 (native machine code)로 번역하고 실행한다. JVM은 크게 Class Loader, Execution Engine, Garbage Collector, Runtime Data Area로 구성되어있다.Class loader개발자가 쓴 .java파일은 컴파일러를 거치면 bytecode(.class)로 변환된다. Class Loader는 이 .class 파일들을 Runtime Data Areas에 적재한다Execution Engine클래스를 실행시키는 역할이다. ..

Java 2025.05.30

[Java] JVM, JRE, JDK 노트정리

자바개발자라면 반드시 알아야할 JVM, JRE, JDK에 대해서 알아보겠다.JDK (Java Development Kit)JDK는 자바 애플리케이션을 개발하기 위한 모든 도구와 라이브러리를 포함하는 개발 키트이다.개발자가 java로 무언갈 하고 싶을 때 가장 먼저 다운로드 하는 것이 바로 이 JDK이다. (예: Spring Boot)여기에는 자바 코드를 컴파일하는 javac (자바 컴파일러), 자바 애플리케이션을 실행하는 자바 런처, 디버거, 문서화 도구 등이 포함된다.Platform specific -> OS별로 각자 제공이 된다컴파일러, JRE등 이런 도구들은 특정 운영체제에서만 실행될 수 있도록 컴파일 되어있다 (예를 들면 javac 실행파일은 windows와 linux용이 다르다)따라서 JDK는 ..

Java 2025.05.30

[Java] Garbage Collection 노트정리

Java의 Garbage Collection (GC)는 메모리 기법 중 하나로, 필요하지 않은 메모리를 치워두는 프로세스이다.이 불필요한 메모리를 치워두지 않으면 memory leak, dangling pointer, 성능 저하 등 다양한 문제를일으킬 수 있기 때문에 java가 가지고 있는 중요한 기능 중 하나이다. JVM (Java Virtual Machine)이 이 기능을 담당한다. 먼저 java의 프로세스를 알아보려면1. java는 메모리 (힙)에 오브젝트들을 만든다2. 그 중 오브젝트(들)의 참조가 끊어질 때 (null이 되거나 참조가 바뀐다) 힙에 남아있는 데이터는 가비지가 된다 (GC에 정리 대상이 된다)3. 이 가비지들은 GC에 의해 제거가 되고 메모리는 비게 된다 예시:Character c..

Java 2025.05.29