2026/01/19 3

람다 표현식 2

1. 익명 클래스 vs 람다람다는 익명 클래스의 대체 문법이지만 이 둘은 완전히 같지 않다! 익명 클래스new Runnable() { @Override public void run() { System.out.println(this); }};새로운 클래스 생성this -> 익명 객체 자신람다 Runnable r = () -> { System.out.println(this);};클래스 생성 Xthis -> 외부 객체차이 구분 익명 클래스 람다생성 구조클래스 생성클래스 없음this자기 자신외부 객체바이트코드클래스 파일invokedynamic목적객체 생성동작 전달 2. 타입 추론람다식에 타입이 존재하지 않는다. 하지만 컴파일은 정상적으로 되는데 이는 함수형 인터페이스가 이미 ..

람다 표현식

1. 람다 표현식 등장 배경자바는 전통적으로 객체지향 언어이다. 클래스 -> 객체 -> 메서드 호출 즉, 동작 하나를 전달하려면 객체가 반드시 필요했었음. 하지만 현대 프로그래밍에서는 다음과 같은 요구가 커졌음이 동작만 넘기고 싶다굳이 클래스가 필요할까?함수를 값처럼 넘길 수는 없나? 2. 람다 표현식이란?람다는 익명 함수라고 설명하지만 이는 정확하지 않음. 람다는 메서드를 구현한 객체를 간결하게 표현하는 문법이다. 자바에는 여전히 함수 타입이 없고, 람다는 객체로 동작한다 !! 3. 람다 표현식 기본 문법(매개변수) -> {실행문}// 예시 (a,b) -> {a + b}// 이 코드와 완전 동일 new Comparator() { @Override public int compare(Intege..

Weekly Paper#3

1. HashSet 내부 동작과 중복 제거 메커니즘 Java에서 HashSet은 내부적으로 HashMap 을 사용한다. HashMap의 실제 저장 구조는 배열과 같다. 배열(table) ├── 0번 버킷 (내부에는 LinkedList가 들어감.) ├── 1번 버킷 ├── 2번 버킷 -> Node -> Node -> Node (LinkedList) ├── ... └── n번 버킷이 배열을 해시 테이블(Hash Table)이라고 부르고, 각 칸을 버킷(bucket)이라고 한다. HashSet에 값 하나를 넣을 때 실제로 일어나는 일set.add("apple");// 1. hashCode() 실행 ex) apple.hashCode() = 93029210int hash = "apple".hashCode();//..

Weekly Paper 2026.01.19