Java에서 List는 데이터 변환과 처리를 유연하게 지원하는 중요한 자료구조입니다. 배열과 List 간 변환, Stream을 활용한 데이터 처리, 그리고 List 데이터를 Set이나 Map으로 변환하는 방법은 효율적인 데이터 관리와 활용에 필수적입니다. 여기서는 각 주제를 깊이 있게 다루고, 관련된 예제 코드를 통해 실용적인 사용법을 설명합니다. Java 데이터 변환, Stream API 활용법, List 변환 예제와 같은 검색어를 자연스럽게 포함했습니다.
1. 배열과 List 간의 변환
배열(Array)과 List 간 변환은 데이터 구조의 장단점을 상호 활용할 수 있게 합니다.
List를 배열로 변환
List.toArray() 메서드를 사용하면 간단히 배열로 변환할 수 있습니다.
예제
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cities = new ArrayList<>();
cities.add("서울");
cities.add("부산");
cities.add("대구");
// List를 배열로 변환
String[] cityArray = cities.toArray(new String[0]);
System.out.println("배열 출력:");
for (String city : cityArray) {
System.out.println(city);
}
}
}
출력 결과
배열 출력:
서울
부산
대구
배열을 List로 변환
Arrays.asList() 메서드를 사용하여 배열을 List로 변환할 수 있습니다.
예제
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] fruits = {"사과", "바나나", "포도"};
// 배열을 List로 변환
List<String> fruitList = Arrays.asList(fruits);
System.out.println("List 출력: " + fruitList);
}
}
출력 결과
List 출력: [사과, 바나나, 포도]
주의: Arrays.asList()는 고정 크기 리스트를 반환하며, 크기 변경이 불가능합니다. 수정 가능한 리스트가 필요하다면 new ArrayList<>(Arrays.asList())를 사용하세요.
2. Stream을 활용한 데이터 처리
Java 8에 도입된 Stream API는 List 데이터를 필터링, 매핑, 정렬 등 다양한 작업에 효과적으로 사용할 수 있는 강력한 도구입니다.
필터링과 매핑
예제
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("김철수");
names.add("박영희");
names.add("이민수");
names.add("최영수");
// "김"씨만 필터링
List<String> kimFamily = names.stream()
.filter(name -> name.startsWith("김"))
.collect(Collectors.toList());
System.out.println("김씨 성을 가진 사람: " + kimFamily);
}
}
출력 결과
김씨 성을 가진 사람: [김철수]
정렬과 데이터 변환
예제
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(1);
numbers.add(4);
numbers.add(3);
// 정렬 및 제곱값으로 변환
List<Integer> squaredNumbers = numbers.stream()
.sorted()
.map(n -> n * n)
.collect(Collectors.toList());
System.out.println("정렬 후 제곱값: " + squaredNumbers);
}
}
출력 결과
정렬 후 제곱값: [1, 9, 16, 25]
3. List 데이터를 Set이나 Map으로 변환
List를 Set으로 변환
Set은 중복을 허용하지 않는 자료구조로, List 데이터를 고유값으로 필터링할 때 유용합니다.
예제
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<String> items = new ArrayList<>();
items.add("사과");
items.add("바나나");
items.add("사과");
// List를 Set으로 변환
Set<String> uniqueItems = new HashSet<>(items);
System.out.println("중복 제거된 데이터: " + uniqueItems);
}
}
출력 결과
중복 제거된 데이터: [바나나, 사과]
List를 Map으로 변환
Map은 키와 값을 가지는 데이터 구조입니다. 데이터를 인덱스나 고유 키로 매핑할 때 사용됩니다.
예제
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<String> students = new ArrayList<>();
students.add("김철수");
students.add("박영희");
students.add("이민수");
// List를 Map으로 변환 (인덱스-값 매핑)
Map<Integer, String> studentMap = new HashMap<>();
for (int i = 0; i < students.size(); i++) {
studentMap.put(i, students.get(i));
}
System.out.println("Map 출력: " + studentMap);
}
}
출력 결과
Map 출력: {0=김철수, 1=박영희, 2=이민수}
Tip: 데이터 처리 효율성과 구조적 요구사항에 따라 Set이나 Map을 선택하세요.
참고 사이트
Java 공식 문서: https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html
'JAVA' 카테고리의 다른 글
[JAVA] List 활용 (2) | 2024.11.18 |
---|---|
[JAVA] Immutable List (불변 리스트) (0) | 2024.11.18 |
[JAVA] List와 동기화 (0) | 2024.11.18 |
[JAVA] List 반복문을 활용한 처리 (0) | 2024.11.17 |
[JAVA] List의 데이터 정렬과 검색 (1) | 2024.11.17 |
[JAVA] List의 주요 구현체와 특징 (0) | 2024.11.16 |
[JAVA] List 인터페이스의 주요 메서드 (0) | 2024.11.16 |
[JAVA] List (0) | 2024.11.16 |