SeouliteLab

[Java/자바] Stream으로 데이터 정렬하여 LinkedHashMap에 저장하기 본문

프로그래밍

[Java/자바] Stream으로 데이터 정렬하여 LinkedHashMap에 저장하기

Seoulite Lab 2024. 3. 15. 01:14

LinkedHashMap은 입력된 순서를 보장하는 Map으로, Stream에서 데이터를 정렬하여 LinkedHashMap에 저장하면 정렬된 순서가 유지됩니다. 아래 예제들을 통해 Stream 데이터를 정렬하고 LinkedHashMap에 저장하는 방법을 알아보겠습니다.

1. 정수형 데이터를 정렬하여 LinkedHashMap에 저장하기

먼저 정수형 데이터를 정렬하여 LinkedHashMap에 저장하는 예제를 살펴보겠습니다.

import java.util.*;
import java.util.stream.*;

public class StreamToLinkedHashMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList(3, 1, 2);

        Map map = list.stream()
                                       .sorted()
                                       .collect(Collectors.toMap(
                                           item -> item,
                                           item -> item,
                                           (existing, replacement) -> existing,
                                           LinkedHashMap::new
                                       ));

        System.out.println("Map: " + map); // 출력 결과: Map: {1=1, 2=2, 3=3}
    }
}

2. 문자열 데이터를 정렬하여 LinkedHashMap에 저장하기

이번에는 문자열 데이터를 정렬하여 LinkedHashMap에 저장하는 예제입니다.

import java.util.*;
import java.util.stream.*;

public class StreamToLinkedHashMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("C", "A", "B");

        Map map = list.stream()
                                       .sorted()
                                       .collect(Collectors.toMap(
                                           item -> item,
                                           item -> item.length(),
                                           (existing, replacement) -> existing,
                                           LinkedHashMap::new
                                       ));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=1, B=1, C=1}
    }
}

3. 객체 데이터를 정렬하여 LinkedHashMap에 저장하기

마지막으로 객체 데이터를 정렬하여 LinkedHashMap에 저장하는 예제를 살펴보겠습니다.

import java.util.*;
import java.util.stream.*;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

public class StreamToLinkedHashMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList(
            new Person("Alice", 30),
            new Person("Bob", 25),
            new Person("Charlie", 35)
        );

        Map map = list.stream()
                                       .sorted(Comparator.comparing(Person::getAge))
                                       .collect(Collectors.toMap(
                                           Person::getName,
                                           Person::getAge,
                                           (existing, replacement) -> existing,
                                           LinkedHashMap::new
                                       ));

        System.out.println("Map: " + map); // 출력 결과: Map: {Bob=25, Alice=30, Charlie=35}
    }
}

위 예제들을 통해 Stream을 이용하여 데이터를 정렬하고 LinkedHashMap에 저장하는 방법을 살펴보았습니다. LinkedHashMap은 입력된 순서를 보장하므로 데이터를 정렬하여 저장할 때 유용하게 사용될 수 있습니다.