[JAVA] Java Comparator 완전 정복: compare 메서드의 동작 원리
Java에서 사용자 정의 정렬이 필요할 때 자주 사용하는 인터페이스가 `Comparator`이다. 이 글에서는 `Comparator`의 핵심 메서드인 `compare(T o1, T o2)`가 어떻게 동작하는지, 어떤 원리로 정렬 순서를 결정하는지를 정리한다. 1. Comparator란?자바에서 사용자 정의 기준으로 객체를 정렬할 수 있게 해주는 인터페이스이다.`Arrays.sort()`, `Collections.sort()`에서 두 번째 인자로 전달할 수 있다.핵심 메서드는 `compare(T o1, T o2)`이다.2. compare 메서드의 동작 원리`compare(T o1, T o2)`는 다음과 같은 정수를 반환한다.반환값의미정렬 시음수(`o1이 o2보다 앞에 위치o1 0o1과 o2의 순서 유지o1..
HashSet은 어떻게 중복을 제거할까? (내부구조와 중복 체크 원리)
🔍 IntroJava에서 중복 없는 데이터를 저장할 때 가장 많이 사용하는 자료구조는 HashSet이다.이 글에서는 HashSet이 어떻게 중복을 제거하는지,그리고 내부적으로 HashMap을 어떻게 활용하는지를 코드 예시와 함께 살펴보려고 한다! 1. HashSet의 저장 구조HashSet은 내부적으로 HashMap을 사용하여 값을 저장한다.public class HashSet implements Set { private transient HashMap map; private static final Object PRESENT = new Object(); public boolean add(E e) { return map.put(e, PRESENT) == null; }}..
Java Stream API - map() vs flatMap() 정복하기
Java의 Stream API는 데이터를 함수형 스타일로 처리할 수 있는 강력한 도구다.그중에서도 `map()`과 `flatMap()`은 가장 자주 사용되는 중간 연산자이다.하지만 두 메서드는 이름이 비슷해 헷갈리기 쉽다.이번 글에서는 두 메서드의 차이와 활용법을 예제 중심으로 쉽게 정리해보겠다.🔄 map() - 요소를 변환`map()`은 스트림의 각 요소를 일대일로 변환할 때 사용한다.주로 원하는 필드만 추출하거나 특정 형태로 변환할 떄 사용한다.예시)각 요소를 새로운 값으로 매핑변환 결과를 새 스트림으로 반환내부적으로 `Function`이 사용됨📌 예제 1: 문자열을 대문자로List names = Arrays.asList("kimcoding", "javalee", "hackerna", "lucky..