아무거나

Stream 정렬 관련 Example 본문

Java & Kotlin/Java

Stream 정렬 관련 Example

전봉근 2020. 5. 28. 01:09
반응형

Stream을 활용한 데이터 가공

  • 문자열로된 숫자와 알파벳대소문자로 되어있는 데이터 정렬
        // Code
        List<String> list = Arrays.asList("9", "A", "Z", "1", "B", "Y", "4", "a", "c");
        List<String> sortedList = list.stream().sorted().collect(Collectors.toList());
        sortedList.forEach(System.out::println);
        return sortedList;
    
        // Output
        [
            "1",
            "4",
            "9",
            "A",
            "B",
            "Y",
            "Z",
            "a",
            "c"
        ]
    
  • 문자열로된 숫자와 알파벳대소문자로 되어있는 데이터 reverse 정렬
        // Code
        List<String> list = Arrays.asList("9", "A", "Z", "1", "B", "Y", "4", "a", "c");
        List<String> sortedList = list.stream()
            .sorted(Comparator.reverseOrder())
            .collect(Collectors.toList());
        sortedList.forEach(System.out::println);
        return sortedList;
    
        // Output
        [
            "c",
            "a",
            "Z",
            "Y",
            "B",
            "A",
            "9",
            "4",
            "1"
        ]
    
  • List<Object>로 되어있는 값 정렬
        // StreamUser
        import lombok.AllArgsConstructor;
        import lombok.Getter;
        import lombok.Setter;
    
        @Getter
        @Setter
        @AllArgsConstructor
        public class StreamUser {
            private String name;
            private int age;
        }
    
        // Code
        List<StreamUser> streamUsers = Arrays.asList(
            new StreamUser("C", 30),
            new StreamUser("D", 40),
            new StreamUser("A", 10),
            new StreamUser("B", 20),
            new StreamUser("E", 50)
        );
    
        List<StreamUser> sortedList = streamUsers.stream()
            .sorted(Comparator.comparingInt(StreamUser::getAge))
            .collect(Collectors.toList());
        sortedList.forEach(System.out::println);
        return sortedList;
    
        // Output
        [
            {
                "name": "A",
                "age": 10
            },
            {
                "name": "B",
                "age": 20
            },
            {
                "name": "C",
                "age": 30
            },
            {
                "name": "D",
                "age": 40
            },
            {
                "name": "E",
                "age": 50
            }
        ]
    
  • List<Object>로 되어있는 값 reverse 정렬
        // StreamUser
        import lombok.AllArgsConstructor;
        import lombok.Getter;
        import lombok.Setter;
    
        @Getter
        @Setter
        @AllArgsConstructor
        public class StreamUser {
            private String name;
            private int age;
        }
    
        // Code
        List<StreamUser> streamUsers = Arrays.asList(
            new StreamUser("C", 30),
            new StreamUser("D", 40),
            new StreamUser("A", 10),
            new StreamUser("B", 20),
            new StreamUser("E", 50)
        );
    
        List<StreamUser> sortedList = streamUsers.stream()
            .sorted(Comparator.comparingInt(StreamUser::getAge).reversed())
            .collect(Collectors.toList());
        sortedList.forEach(System.out::println);
        return sortedList;
    
        // Output
        [
            {
                "name": "E",
                "age": 50
            },
            {
                "name": "D",
                "age": 40
            },
            {
                "name": "C",
                "age": 30
            },
            {
                "name": "B",
                "age": 20
            },
            {
                "name": "A",
                "age": 10
            }
        ]    
    
반응형
Comments