Collectors는 Object 클래스를 확장한 최종 클래스입니다. 요소를 컬렉션으로 축적하고, 다양한 기준에 따라 요소를 요약하는 등의 축소 작업을 제공합니다.
Java Collectors 클래스는 요소를 처리하는 다양한 방법을 제공합니다.
행동 양식 | 설명 |
---|---|
공개 정적 수집기 averagingDouble(ToDoubleFunction 매퍼) | 입력 요소에 적용된 이중 값 함수의 산술 평균을 생성하는 수집기를 반환합니다. 요소가 없으면 결과는 0입니다. |
공개 정적 수집기 감소(T ID, BinaryOperator op) | 제공된 ID를 사용하여 지정된 BinaryOperator에서 입력 요소를 축소하는 수집기를 반환합니다. |
공개 정적 수집기 | 지정된 BinaryOperator에서 입력 요소를 축소하는 수집기를 반환합니다. 결과는 Optional로 설명됩니다. |
공용 정적 수집기 감소(U ID, 함수 매퍼, BinaryOperator op) | 지정된 매핑 함수 및 BinaryOperator에서 입력 요소의 축소를 수행하는 Collector를 반환합니다. 이는 축소 전에 요소의 변환을 허용하는 감소(Object, BinaryOperator)의 일반화입니다. |
공개 정적 수집기 | T 유형의 입력 요소에 대해 '그룹화 기준' 작업을 구현하고, 분류 함수에 따라 요소를 그룹화하고, 결과를 맵으로 반환하는 Collector를 반환합니다. |
공개 정적 수집기 | T 유형의 입력 요소에 대해 계단식 '그룹화' 작업을 구현하고 분류 함수에 따라 요소를 그룹화한 다음 지정된 다운스트림 수집기를 사용하여 지정된 키와 연결된 값에 대해 축소 작업을 수행하는 수집기를 반환합니다. |
공개 정적 | T 유형의 입력 요소에 대해 계단식 '그룹화' 작업을 구현하고 분류 함수에 따라 요소를 그룹화한 다음 지정된 다운스트림 수집기를 사용하여 지정된 키와 연결된 값에 대해 축소 작업을 수행하는 수집기를 반환합니다. Collector가 생성한 맵은 제공된 팩토리 함수를 사용하여 생성됩니다. |
공개 정적 수집기 | T 유형의 입력 요소에 대해 '그룹화 기준' 작업을 구현하고 분류 함수에 따라 요소를 그룹화하는 동시 수집기를 반환합니다. |
공개 정적 수집기 | T 유형의 입력 요소에 대해 계단식 '그룹화' 작업을 구현하고 분류 함수에 따라 요소를 그룹화한 다음 지정된 다운스트림 수집기를 사용하여 지정된 키와 연결된 값에 대해 축소 작업을 수행하는 동시 수집기를 반환합니다. |
공개 정적 | T 유형의 입력 요소에 대해 계단식 '그룹화' 작업을 구현하고 분류 함수에 따라 요소를 그룹화한 다음 지정된 다운스트림 수집기를 사용하여 지정된 키와 연결된 값에 대해 축소 작업을 수행하는 동시 수집기를 반환합니다. Collector가 생성한 ConcurrentMap은 제공된 팩토리 함수를 사용하여 생성됩니다. |
공개 정적 수집기 | 조건자에 따라 입력 요소를 분할하고 이를 맵으로 구성하는 수집기를 반환합니다. |
공개 정적 수집기 | Predicate에 따라 입력 요소를 분할하고, 다른 Collector에 따라 각 파티션의 값을 줄이고, 값이 다운스트림 축소의 결과인 Map으로 구성하는 Collector를 반환합니다. |
공개 정적 수집기 | 제공된 매핑 기능을 입력 요소에 적용한 결과인 키와 값을 갖는 요소를 Map에 누적하는 Collector를 반환합니다. |
공개 정적 수집기 | 제공된 매핑 기능을 입력 요소에 적용한 결과인 키와 값을 갖는 요소를 Map에 누적하는 Collector를 반환합니다. |
공개 정적 | 제공된 매핑 기능을 입력 요소에 적용한 결과인 키와 값을 갖는 요소를 Map에 누적하는 Collector를 반환합니다. |
공개 정적 수집기 | 제공된 매핑 기능을 입력 요소에 적용한 결과인 키와 값을 갖는 ConcurrentMap에 요소를 축적하는 동시 수집기를 반환합니다. |
공개 정적 수집기 | 제공된 매핑 기능을 입력 요소에 적용한 결과인 키와 값을 갖는 ConcurrentMap에 요소를 축적하는 동시 수집기를 반환합니다. |
공개 정적 | 제공된 매핑 기능을 입력 요소에 적용한 결과인 키와 값을 갖는 ConcurrentMap에 요소를 축적하는 동시 수집기를 반환합니다. |
공개 정적 수집기 summarizingInt(ToIntFunction 매퍼) | 내부 생성 매핑 함수를 각 입력 요소에 적용하고 결과 값에 대한 요약 통계를 반환하는 Collector를 반환합니다. |
공개 정적 수집기 요약Long(ToLongFunction 매퍼) | 각 입력 요소에 오랫동안 생성되는 매핑 함수를 적용하고 결과 값에 대한 요약 통계를 반환하는 Collector를 반환합니다. |
공개 정적 수집기 요약Double(ToDoubleFunction 매퍼) | 각 입력 요소에 이중 생성 매핑 함수를 적용하고 결과 값에 대한 요약 통계를 반환하는 Collector를 반환합니다. |
Java 수집기 예: 데이터를 목록으로 가져오기
import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class CollectorsExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); List productPriceList = productsList.stream() .map(x->x.price) // fetching price .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList); } }
산출:
[25000.0, 30000.0, 28000.0, 28000.0, 90000.0]
Java 수집기 예: 데이터를 집합으로 변환
import java.util.stream.Collectors; import java.util.Set; import java.util.List; import java.util.ArrayList; classProduct{ intid; String name; floatprice; public Product(intid, String name, floatprice) { this.id = id; this.name = name; this.price = price; } } publicclass CollectorsExample { publicstaticvoid main(String[] args) { ListproductsList = new ArrayList(); //Adding Products productsList.add(newProduct(1,'HP Laptop',25000f)); productsList.add(newProduct(2,'Dell Laptop',30000f)); productsList.add(newProduct(3,'Lenevo Laptop',28000f)); productsList.add(newProduct(4,'Sony Laptop',28000f)); productsList.add(newProduct(5,'Apple Laptop',90000f)); SetproductPriceList = productsList.stream() .map(x->x.price) // fetching price .collect(Collectors.toSet()); // collecting as list System.out.println(productPriceList); } }
산출:
[25000.0, 30000.0, 28000.0, 90000.0]
Java 수집기 예: sum 메소드 사용
import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class CollectorsExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); Double sumPrices = productsList.stream() .collect(Collectors.summingDouble(x->x.price)); // collecting as list System.out.println('Sum of prices: '+sumPrices); Integer sumId = productsList.stream().collect(Collectors.summingInt(x->x.id)); System.out.println('Sum of id's: '+sumId); } }
산출:
Sum of prices: 201000.0 Sum of id's: 15
Java 수집기 예: 제품 평균 가격 가져오기
import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class CollectorsExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); Double average = productsList.stream() .collect(Collectors.averagingDouble(p->p.price)); System.out.println('Average price is: '+average); } }
산출:
Average price is: 40200.0
Java 수집기 예: 요소 계산
import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ intid; String name; floatprice; public Product(intid, String name, floatprice) { this.id = id; this.name = name; this.price = price; } publicint getId() { returnid; } public String getName() { returnname; } publicfloat getPrice() { returnprice; } } publicclass CollectorsExample { publicstaticvoid main(String[] args) { ListproductsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); Long noOfElements = productsList.stream() .collect(Collectors.counting()); System.out.println('Total elements : '+noOfElements); } }
산출:
Total elements : 5