JAVA

[JAVA] List의 데이터 변환과 처리

인생아 2024. 11. 17. 16:14
반응형

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 APIList 데이터를 필터링, 매핑, 정렬 등 다양한 작업에 효과적으로 사용할 수 있는 강력한 도구입니다.

필터링과 매핑

예제

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