[Java] Java Enum이란? 열거형 타입 개념과 활용법 총정리
[Java] Enum Type
1. Enum 개요1. Enum 이란Enum (Enumeration Type, 열거형)은 상수 값들의 집합을 정의하는 특별한 데이터 타입입니다.일반적인 final static 상수보다 가독성이 높고 유지보수가 쉬운 장점이 있습니다.2. En
crushed-taro.tistory.com
1. 람다 개요
1. 람다식(Lambda Expression)이란
람다식은 익명 함수(Anonymous Function)를 단순한 표현식으로 나타내는 방식으로, Java 8부터 지원됩니다.
2. 람다식이 등장한 이유
기존에는 익명 클래스를 활용해 함수를 정의해야 했지만, 코드가 길고 가독성이 떨어졌습니다.
람다식을 사용하면 코드를 더 간결하게 작성할 수 있고, 함수형 프로그래밍 패러다임을 적용할 수 있습니다.
3. 람다식 기본 문법
- 코드가 간결해지고 가독성이 향상됩니다.
- 익명 함수처럼 활용 가능하며, 필요할 때 즉시 정의하여 사용할 수 있습니다.
// (매개변수) -> { 실행할 코드 }
// 기존 익명 클래스 방식
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return a - b;
}
};
// 람다식 적용
Comparator<Integer> comparatorLambda = (a, b) -> a - b;
2. 함수적 인터페이스 (@FunctionalInterface)
1. 함수적 인터페이스란
함수형 인터페이스(Functional Interface)는 단 하나의 추상 메서드만 가지는 인터페이스입니다.
람다식을 사용하려면 함수형 인터페이스가 필수적입니다.
2. @FunctionalInterface 어노테이션
Java에서는 함수형 인터페이스를 정의할 때 @FunctionalInterface를 사용하여 컴파일러가 올바르게 작성되었는지 검증할 수 있습니다.
@FunctionalInterface
interface MyFunction {
int apply(int a, int b);
}
1. 기본 제공 함수형 인터페이스 (java.util.function 패키지)
- Predicate<T> → boolean test(T t) (조건 검사)
- Function<T, R> → R apply(T t) (입력값을 변환)
- Consumer<T> → void accept(T t) (입력값 소비)
- Supplier<T> → T get() (값 제공)
Function<String, Integer> lengthFunction = str -> str.length();
System.out.println(lengthFunction.apply("Lambda")); // 6
3. 메서드 참조
람다식이 더욱 간결해질 수 있도록 메소드 참조(Method Reference)를 활용할 수 있습니다.
1. 메서드 참조 기본 문법
클래스명::메서드명
객체참조::메서드명
2. 정적 메서드 참조
Function<Integer, String> intToString = String::valueOf;
System.out.println(intToString.apply(100)); // "100"
3. 인스턴스 메서드 참조
String str = "hello";
Supplier<Integer> lengthSupplier = str::length;
System.out.println(lengthSupplier.get()); // 5
4. 생성자 참조
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> list = listSupplier.get();
4. 람다식을 활용한 스트림(Stream) 처리
Java에서는 람다식을 활용하여 Stream API와 함께 데이터를 손쉽게 처리할 수 있습니다.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 람다식 활용
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("A"))
.collect(Collectors.toList());
System.out.println(filteredNames); // ["Alice"]
5. 람다식과 병렬 처리 (Parallel Stream)
람다식은 멀티코어 환경에서도 효율적으로 병렬 처리를 할 수 있도록 도와줍니다.
parallelStream()을 활용하면 데이터를 병렬로 처리하여 성능을 향상시킬 수 있습니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 병렬 스트림 활용
int sum = numbers.parallelStream()
.reduce(0, Integer::sum);
System.out.println(sum); // 55
'이것 저것 개발 공부 > JAVA' 카테고리의 다른 글
[Java] Java Enum이란? 열거형 타입 개념과 활용법 총정리 (1) | 2025.03.01 |
---|---|
[Java] 입출력 (0) | 2025.03.01 |
[Java] 예외처리 (0) | 2025.03.01 |
[Java] 제네릭스와 컬렉션 (1) | 2025.02.28 |
[Java] 다형성 (1) | 2025.02.28 |