logo

Java コレクター

Collectors は、Object クラスを拡張した最終クラスです。要素をコレクションに蓄積したり、さまざまな基準に従って要素を要約したりするなどのリダクション操作を提供します。

Java Collectors クラスは要素を処理するためのさまざまなメソッドを提供します

メソッド 説明
public static Collector averagingDouble(ToDoubleFunction マッパー) 入力要素に適用された double 値関数の算術平均を生成する Collector を返します。要素が存在しない場合、結果は 0 になります。
public static コレクタ削減(T アイデンティティ、BinaryOperator op) 指定された ID を使用して、指定された BinaryOperator の下で入力要素の削減を実行する Collector を返します。
パブリック静的コレクター削減(BinaryOperator 演算) 指定された BinaryOperator で入力要素の削減を実行する Collector を返します。結果はオプションとして記述されます。
public static Collector減らす(Uアイデンティティ、関数マッパー、BinaryOperator op) これは、指定されたマッピング関数と BinaryOperator に基づいて入力要素の削減を実行する Collector を返します。これは、reduce(Object, BinaryOperator) を一般化したもので、リダクションの前に要素を変換できるようにします。
パブリック静的コレクター> groupingBy(関数分類子) これは、タイプ T の入力要素に対して「group by」操作を実装し、分類関数に従って要素をグループ化し、結果を Map に返す Collector を返します。
パブリック静的コレクターgroupingBy(関数分類子、コレクターダウンストリーム) これは、タイプ T の入力要素に対するカスケード 'group by' 操作を実装する Collector を返し、分類関数に従って要素をグループ化し、指定されたダウンストリーム Collector を使用して、指定されたキーに関連付けられた値に対してリダクション操作を実行します。
パブリック静的コレクターの groupingBy(関数分類子、サプライヤーのマップファクトリー、コレクターのダウンストリーム) これは、タイプ T の入力要素に対するカスケード 'group by' 操作を実装する Collector を返し、分類関数に従って要素をグループ化し、指定されたダウンストリーム Collector を使用して、指定されたキーに関連付けられた値に対してリダクション操作を実行します。コレクターによって生成されるマップは、提供されたファクトリー関数を使用して作成されます。
パブリック静的コレクター> groupingByConcurrent(関数分類子) これは、タイプ T の入力要素に対して「group by」操作を実装し、分類関数に従って要素をグループ化する同時コレクタを返します。
パブリック静的コレクターgroupingByConcurrent(関数分類子、コレクターダウンストリーム) これは、型 T の入力要素に対してカスケードされた 'group by' 操作を実装し、分類関数に従って要素をグループ化し、指定されたダウンストリーム コレクターを使用して指定されたキーに関連付けられた値に対してリダクション操作を実行する同時コレクターを返します。
パブリック静的コレクター groupingByConcurrent(関数分類子、サプライヤー マップファクトリー、コレクター ダウンストリーム) これは、型 T の入力要素に対してカスケードされた 'group by' 操作を実装し、分類関数に従って要素をグループ化し、指定されたダウンストリーム コレクターを使用して指定されたキーに関連付けられた値に対してリダクション操作を実行する同時コレクターを返します。 Collector によって生成される ConcurrentMap は、提供されたファクトリ関数を使用して作成されます。
パブリック静的コレクター> PartitioningBy(述語述語) Predicateに従って入力要素を分割し、それらをMapに編成するCollectorを返します。 。返される Map の型、変更可能性、直列化可能性、またはスレッドの安全性については保証されません。
パブリック静的コレクターPartitioningBy(述語述語、コレクターダウンストリーム) これは、Predicate に従って入力要素を分割し、別の Collector に従って各パーティションの値を削減し、値が下流の削減の結果である Map にそれらを編成する Collector を返します。
パブリック静的コレクターtoMap(関数キーマッパー、関数値マッパー) これは、提供されたマッピング関数を入力要素に適用した結果であるキーと値を持つ要素を Map に蓄積する Collector を返します。
パブリック静的コレクターtoMap (関数 keyMapper 、関数 valueMapper 、BinaryOperator mergeFunction ) 。 これは、提供されたマッピング関数を入力要素に適用した結果であるキーと値を持つ要素を Map に蓄積する Collector を返します。
パブリック静的コレクター toMap(関数 keyMapper、関数 valueMapper、BinaryOperator mergeFunction、サプライヤー マップSupplier) これは、提供されたマッピング関数を入力要素に適用した結果であるキーと値を持つ要素を Map に蓄積する Collector を返します。
パブリック静的コレクターtoConcurrentMap(関数キーマッパー、関数値マッパー) これは、提供されたマッピング関数を入力要素に適用した結果であるキーと値を持つ要素を ConcurrentMap に蓄積する同時コレクタを返します。
パブリック静的コレクターtoConcurrentMap(関数キーマッパー、関数値マッパー、BinaryOperator mergeFunction) これは、提供されたマッピング関数を入力要素に適用した結果であるキーと値を持つ要素を ConcurrentMap に蓄積する同時コレクタを返します。
パブリック静的Collector toConcurrentMap(Function keyMapper、Function valueMapper、BinaryOperator mergeFunction、Supplier MapSupplier) これは、提供されたマッピング関数を入力要素に適用した結果であるキーと値を持つ要素を ConcurrentMap に蓄積する同時コレクタを返します。
public static Collector summarizingInt(ToIntFunction マッパー) これは、int 生成マッピング関数を各入力要素に適用する Collector を返し、結果の値の概要統計を返します。
public static Collector summarizingLong(ToLongFunction マッパー) これは、長時間生成されるマッピング関数を各入力要素に適用する Collector を返し、結果の値の概要統計を返します。
public static Collector summarizingDouble(ToDoubleFunction マッパー) これは、二重生成マッピング関数を各入力要素に適用するコレクターを返し、結果の値の要約統計を返します。

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