logo

Java-verzamelaars

Collectors is een laatste klasse die de Object-klasse uitbreidt. Het biedt reductiebewerkingen, zoals het verzamelen van elementen in collecties, het samenvatten van elementen volgens verschillende criteria, enz.

De klasse Java Collectors biedt verschillende methoden om met elementen om te gaan

Methoden Beschrijving
openbare statische Collector-middelingDouble (ToDoubleFunction mapper) Het retourneert een Collector die het rekenkundig gemiddelde produceert van een functie met dubbele waarde die op de invoerelementen wordt toegepast. Als er geen elementen aanwezig zijn, is het resultaat 0.
openbare statische Collector reducerend (T-identiteit, BinaryOperator op) Het retourneert een Collector die een reductie van zijn invoerelementen uitvoert onder een gespecificeerde BinaryOperator met behulp van de opgegeven identiteit.
openbare statische verzamelaarreduceren(BinaryOperator op) Het retourneert een Collector die een reductie van zijn invoerelementen uitvoert onder een gespecificeerde BinaryOperator. Het resultaat wordt beschreven als Optioneel.
openbare statische Collector-reductie (U-identiteit, Functietoewijzer, BinaryOperator op) Het retourneert een Collector die een reductie van zijn invoerelementen uitvoert onder een gespecificeerde mappingfunctie en BinaryOperator. Dit is een generalisatie van reduceren (Object, BinaryOperator) die een transformatie van de elementen mogelijk maakt vóór reductie.
openbare statische verzamelaar> groupingBy(Functieclassificator) Het retourneert een Collector die een 'groeperen op'-bewerking implementeert op invoerelementen van het type T, elementen groepeert volgens een classificatiefunctie en de resultaten retourneert in een kaart.
openbare statische verzamelaargroupingBy(Functieclassificator, Collector stroomafwaarts) Het retourneert een Collector die een trapsgewijze 'groeperen op'-bewerking implementeert op invoerelementen van het type T, waarbij elementen worden gegroepeerd volgens een classificatiefunctie en vervolgens een reductiebewerking wordt uitgevoerd op de waarden die aan een bepaalde sleutel zijn gekoppeld met behulp van de opgegeven stroomafwaartse Collector.
publiek statischCollector groupingBy(Functieclassificator, Leverancier mapFactory, Collector downstream) Het retourneert een Collector die een trapsgewijze 'groeperen op'-bewerking implementeert op invoerelementen van het type T, waarbij elementen worden gegroepeerd volgens een classificatiefunctie en vervolgens een reductiebewerking wordt uitgevoerd op de waarden die aan een bepaalde sleutel zijn gekoppeld met behulp van de opgegeven stroomafwaartse Collector. De door de Collector geproduceerde kaart wordt gemaakt met de meegeleverde fabrieksfunctie.
openbare statische verzamelaar> groupingByConcurrent(Functieclassificator) Het retourneert een gelijktijdige Collector die een 'groeperen op'-bewerking implementeert op invoerelementen van het type T, waarbij elementen worden gegroepeerd volgens een classificatiefunctie.
openbare statische verzamelaargroupingByConcurrent(Functieclassificator, Collector stroomafwaarts) Het retourneert een gelijktijdige Collector die een trapsgewijze 'groeperen op'-bewerking implementeert op invoerelementen van het type T, elementen groepeert volgens een classificatiefunctie en vervolgens een reductiebewerking uitvoert op de waarden die aan een bepaalde sleutel zijn gekoppeld met behulp van de opgegeven stroomafwaartse Collector.
publiek statischCollector groupingByConcurrent(Functieclassificator, Leverancier mapFactory, Collector downstream) Het retourneert een gelijktijdige Collector die een trapsgewijze 'groeperen op'-bewerking implementeert op invoerelementen van het type T, elementen groepeert volgens een classificatiefunctie en vervolgens een reductiebewerking uitvoert op de waarden die aan een bepaalde sleutel zijn gekoppeld met behulp van de opgegeven stroomafwaartse Collector. De door de Collector geproduceerde ConcurrentMap wordt gemaakt met de meegeleverde fabrieksfunctie.
openbare statische verzamelaar> partitioningBy(Predikaat-predikaat) Het retourneert een Collector die de invoerelementen verdeelt volgens een predikaat en deze in een kaart organiseert . Er zijn geen garanties over het type, de veranderbaarheid, de serialiseerbaarheid of de draadveiligheid van de geretourneerde kaart.
openbare statische verzamelaarpartitioningBy(Predikaatpredikaat, Collector stroomafwaarts) Het retourneert een Collector die de invoerelementen verdeelt volgens een predikaat, de waarden in elke partitie reduceert volgens een andere Collector, en deze organiseert in een kaart waarvan de waarden het resultaat zijn van de stroomafwaartse reductie.
openbare statische verzamelaartoMap(Functie keyMapper, Functie valueMapper) Het retourneert een Collector die elementen verzamelt in een kaart waarvan de sleutels en waarden het resultaat zijn van het toepassen van de geleverde toewijzingsfuncties op de invoerelementen.
openbare statische verzamelaartoMap (Functie keyMapper, Functie valueMapper, BinaryOperator mergeFunction). Het retourneert een Collector die elementen verzamelt in een kaart waarvan de sleutels en waarden het resultaat zijn van het toepassen van de geleverde toewijzingsfuncties op de invoerelementen.
publiek statischCollector toMap (Functie keyMapper, Functie valueMapper, BinaryOperator mergeFunction, Leverancier mapLeverancier) Het retourneert een Collector die elementen verzamelt in een kaart waarvan de sleutels en waarden het resultaat zijn van het toepassen van de geleverde toewijzingsfuncties op de invoerelementen.
openbare statische verzamelaartoConcurrentMap(Functie keyMapper, Functie valueMapper) Het retourneert een gelijktijdige Collector die elementen verzamelt in een ConcurrentMap waarvan de sleutels en waarden het resultaat zijn van het toepassen van de geleverde toewijzingsfuncties op de invoerelementen.
openbare statische verzamelaartoConcurrentMap(Functie keyMapper, Functie valueMapper, BinaryOperator mergeFunction) Het retourneert een gelijktijdige Collector die elementen verzamelt in een ConcurrentMap waarvan de sleutels en waarden het resultaat zijn van het toepassen van de geleverde toewijzingsfuncties op de invoerelementen.
publiek statischCollector toConcurrentMap (Functie keyMapper, Functie valueMapper, BinaryOperator mergeFunction, LeverancierskaartLeverancier) Het retourneert een gelijktijdige Collector die elementen verzamelt in een ConcurrentMap waarvan de sleutels en waarden het resultaat zijn van het toepassen van de geleverde toewijzingsfuncties op de invoerelementen.
openbare statische Collector summarizingInt(ToIntFunction mapper) Het retourneert een Collector die een int-producerende toewijzingsfunctie toepast op elk invoerelement, en samenvattende statistieken retourneert voor de resulterende waarden.
openbare statische Collector samenvattingLong(ToLongFunction mapper) Het retourneert een Collector die een langdurige mappingfunctie toepast op elk invoerelement, en samenvattende statistieken retourneert voor de resulterende waarden.
openbare statische Collector dieDouble samenvat (ToDoubleFunction mapper) Het retourneert een Collector die een dubbelproducerende toewijzingsfunctie toepast op elk invoerelement, en samenvattende statistieken retourneert voor de resulterende waarden.

Java Collectors Voorbeeld: gegevens ophalen als lijst

 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); } } 

Uitgang:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Java Collectors-voorbeeld: gegevens als set converteren

 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); } } 

Uitgang:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Java Collectors Voorbeeld: de sommethode gebruiken

 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); } } 

Uitgang:

 Sum of prices: 201000.0 Sum of id's: 15 

Voorbeeld van Java Collectors: gemiddelde productprijs verkrijgen

 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); } } 

Uitgang:

 Average price is: 40200.0 

Java Collectors-voorbeeld: elementen tellen

 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); } } 

Uitgang:

 Total elements : 5