변경 가능한 축소
Collection 또는 배열을 통한 변경이 가능한 컨테이너 객체를 반환합니다.
collect() 메서드를 이용하여 Collection이나 변경이 가능한 컨테이너 객체로 추출하는 방법을 학습하였습니다.
collect()는 Collector 인스턴스를 사용하며 사용 방법은 아래와 같습니다.
Collector 클래스에서는 변경이 가능한 축소 결과를 반환하기 위해 아래의 기능을 제공합니다.
collect() 메서드를 사용하여 아래 작업을 수행할 수 있습니다.
List에서 스트림 요소를 추출합니다.
Set에서 스트림 요소를 추출합니다.
key, value로 매핑된 collector를 반환합니다.
스트림 요소를 Double, Long, Integer 값으로 매핑한 결과로 반환합니다.
BinaryOperator 함수를 사용하여 스트림 요소를 축소하여 반환합니다.
제공된 Predicate 통해 맵으로 분할합니다.
스트림 요소 수를 반환합니다.
제공된 그룹화 기준으로 그룹화된 맵을 생성합니다.
수집중인 모든 스트림 요소에 맵핑 작업을 진행합니다.
스트림 요소를 단일 문자열로 연결합니다.
제공된 Comparator 기반의 비교를 통해 최소, 최대 값을 반환합니다.
public class Collections {
private List<Student> students;
private List<String> list;
private List<String> binaryOperatorList;
@Before
public void createObject(){
students = new ArrayList<>();
students.add(new Student("Jun", 20, "A"));
students.add(new Student("Min", 30, "A"));
students.add(new Student("Lee", 24, "B"));
students.add(new Student("Qoo", 22, "C"));
}
@Before
public void createList(){
list = new ArrayList<>();
list.add("A");
list.add("BB");
list.add("CCC");
list.add("BBB");
}
@Before
public void createDuplicateList(){
binaryOperatorList = new ArrayList<>();
binaryOperatorList.add("A");
binaryOperatorList.add("BB");
binaryOperatorList.add("CCC");
binaryOperatorList.add("BB");
}
@Test
public void collectToList(){
List<String> sName = students.stream()
.map(s -> s.getName())
.collect(Collectors.toList());
System.out.println("toList : " + sName);
}
@Test
public void collectToSet(){
Set<String> sName = students.stream()
.map(s -> s.getName())
.collect(Collectors.toSet());
System.out.println("toSet : " + sName);
}
@Test
public void collectToCollection(){
LinkedList<String> sName = students.stream()
.map(s -> s.getName())
.collect(Collectors.toCollection(LinkedList::new));
System.out.println("toCollection : " + sName);
}
@Test
public void collectToMap(){
Map<String, Integer> sMap = list.stream()
.collect(Collectors.toMap(s -> s, s -> s.length()));
System.out.println("toMap : " + sMap);
}
@Test
public void collectToMapBinaryOperator(){
Map<String, Integer> sMap = binaryOperatorList.stream()
.collect(Collectors.toMap(s -> s, s -> s.length(), (s1, s2) -> s1));
System.out.println("toMapBinaryOperator : " + sMap);
}
@Test
public void collectToMapOverloaded(){
Map<String, Integer> sMap = binaryOperatorList.stream()
.collect(Collectors.toMap(s -> s, s -> s.length(), (s1, s2) -> s1, HashMap::new));
System.out.println("toMapBinaryOverloaded : " + sMap);
}
}
---출력결과---
toList : [Jun, Min, Lee, Qoo]
toMapBinaryOperator : {BB=2, A=1, CCC=3}
toCollection : [Jun, Min, Lee, Qoo]
toMapBinaryOverloaded : {BB=2, A=1, CCC=3}
toMap : {BB=2, A=1, CCC=3, BBB=3}
toSet : [Qoo, Jun, Min, Lee]
JPA 패러다임 불일치 문제해결 (지연로딩) (0) | 2023.12.29 |
---|---|
[JUnit5] 모듈 구조 - Platform, Jupiter, Vintage (0) | 2021.08.02 |
[Stream] collect method (0) | 2020.07.31 |
[Stream] finding operation (0) | 2020.07.30 |
[Stream] reduce method (0) | 2020.07.29 |
댓글 영역