반응형
Java 8부터 도입된 Lambda 표현식, Stream API, Optional은 List와 같은 컬렉션 데이터를 처리하는 데 강력한 기능을 제공합니다.
1. Lambda와 List의 결합
Lambda 표현식은 간결한 코드로 리스트의 데이터를 처리하거나 반복 작업을 수행하는 데 유용합니다. forEach(), removeIf()와 같은 메서드와 함께 사용하면 코드의 가독성이 크게 향상됩니다.
Lambda를 활용한 List 데이터 출력
import java.util.ArrayList;
import java.util.List;
public class LambdaWithList {
public static void main(String[] args) {
List<String> cities = new ArrayList<>();
cities.add("서울");
cities.add("부산");
cities.add("대구");
// Lambda로 데이터 출력
cities.forEach(city -> System.out.println("도시 이름: " + city));
}
}
조건에 따른 요소 제거
import java.util.ArrayList;
import java.util.List;
public class RemoveIfExample {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("홍길동");
names.add("이순신");
names.add("안중근");
names.add("이순신");
// '이순신' 이름 제거
names.removeIf(name -> name.equals("이순신"));
System.out.println("이름 제거 후: " + names);
}
}
Lambda와 List의 결합을 활용하면 데이터 필터링, 조건부 작업이 간단해집니다.
반응형
2. Stream과 List의 상호 변환
Stream API는 데이터를 필터링, 매핑, 정렬 등 다양한 연산으로 처리할 수 있는 강력한 도구입니다. Stream과 List 간의 변환을 통해 데이터를 효율적으로 다룰 수 있습니다.
List를 Stream으로 변환
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ListToStream {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("사과");
fruits.add("배");
fruits.add("바나나");
// Stream으로 변환 후 필터링
List<String> filteredFruits = fruits.stream()
.filter(fruit -> fruit.contains("바"))
.collect(Collectors.toList());
System.out.println("필터링된 과일: " + filteredFruits);
}
}
Stream을 List로 변환
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.List;
public class StreamToList {
public static void main(String[] args) {
Stream<String> cityStream = Stream.of("서울", "부산", "대구");
// Stream을 List로 변환
List<String> cityList = cityStream.collect(Collectors.toList());
System.out.println("리스트로 변환된 도시들: " + cityList);
}
}
Stream을 활용하면 대용량 데이터를 메모리 효율적으로 처리할 수 있습니다. 특히 데이터 스트림을 필터링하거나 매핑하는 작업에 적합합니다.
3. Optional과의 연계
Optional은 NullPointerException을 방지하며 안전하게 값을 처리할 수 있는 Java 8의 기능입니다. List와 Optional을 결합하여 특정 데이터의 유무를 검사하거나 안전하게 결과를 반환할 수 있습니다.
Optional과 List의 연계
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class OptionalWithList {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("홍길동");
names.add("이순신");
names.add("안중근");
// Optional로 안전하게 첫 번째 요소 가져오기
Optional<String> firstName = names.stream().findFirst();
firstName.ifPresent(name -> System.out.println("첫 번째 이름: " + name));
}
}
Optional로 Null 검사
import java.util.Optional;
public class NullSafeExample {
public static void main(String[] args) {
Optional<String> name = Optional.ofNullable(null);
// 값이 없으면 대체 값 반환
String result = name.orElse("기본 이름");
System.out.println("이름: " + result);
}
}
Optional과 Stream API를 결합하면 데이터의 유무를 간결하게 처리할 수 있습니다.
참고사이트
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Gson과 Java 컬렉션 (0) | 2024.12.13 |
---|---|
[JAVA] Gson을 활용한 기본 JSON 처리 (0) | 2024.11.25 |
[JAVA] Gson 환경 설정 (0) | 2024.11.24 |
[JAVA] Gson 이란? (1) | 2024.11.23 |
[JAVA] List 자주 사용하는 유틸리티 메서드와 트릭 (0) | 2024.11.21 |
[JAVA] List 자주 발생하는 문제와 해결법 (1) | 2024.11.20 |
[JAVA] List성능 비교와 최적화 (0) | 2024.11.19 |
[JAVA] List 활용 (2) | 2024.11.18 |