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 } ]
반응형