logo

Java samlere

Collectors er en sidste klasse, der udvider objektklassen. Det giver reduktionsoperationer, såsom at akkumulere elementer i samlinger, opsummere elementer i henhold til forskellige kriterier osv.

Java Collectors-klassen giver forskellige metoder til at håndtere elementer

Metoder Beskrivelse
offentlig statisk samler gennemsnitDouble(ToDoubleFunction kortlægger) Den returnerer en Collector, der producerer det aritmetiske middelværdi af en funktion med dobbelt værdi anvendt på input-elementerne. Hvis ingen elementer er til stede, er resultatet 0.
public static Collector reducing (T-identitet, BinaryOperator op) Det returnerer en Collector, som udfører en reduktion af sine input-elementer under en specificeret BinaryOperator ved hjælp af den angivne identitet.
offentlig statisk samlerreducerende(BinaryOperator op) Det returnerer en Collector, som udfører en reduktion af sine input-elementer under en specificeret BinaryOperator. Resultatet beskrives som et valgfrit.
public static Collector-reducerende (U-identitet, Funktionsmapper, BinaryOperator op) Det returnerer en Collector, som udfører en reduktion af sine input-elementer under en specificeret kortlægningsfunktion og BinaryOperator. Dette er en generalisering af reduktion (Object, BinaryOperator), som tillader en transformation af elementerne før reduktion.
offentlig statisk samler> groupingBy(Funktionsklassifikator) Det returnerer en Collector, der implementerer en 'gruppe efter'-operation på input-elementer af type T, grupperer elementer i henhold til en klassifikationsfunktion og returnerer resultaterne i et kort.
offentlig statisk samlergroupingBy(Funktionsklassifikator, Collector downstream) Den returnerer en Collector, der implementerer en kaskadedelt 'gruppe efter'-operation på input-elementer af type T, grupperer elementer i henhold til en klassifikationsfunktion og udfører derefter en reduktionsoperation på værdierne, der er knyttet til en given nøgle ved hjælp af den specificerede downstream-samler.
offentlig statiskCollector groupingBy(Funktionsklassifikator, LeverandørkortFactory, Collector downstream) Den returnerer en Collector, der implementerer en kaskadedelt 'gruppe efter'-operation på input-elementer af type T, grupperer elementer i henhold til en klassifikationsfunktion og udfører derefter en reduktionsoperation på værdierne, der er knyttet til en given nøgle ved hjælp af den specificerede downstream-samler. Kortet produceret af samleren er lavet med den medfølgende fabriksfunktion.
offentlig statisk samler> groupingByConcurrent(Funktionsklassifikator) Det returnerer en samtidig Collector, der implementerer en 'gruppe efter'-operation på input-elementer af type T, og grupperer elementer i henhold til en klassifikationsfunktion.
offentlig statisk samlergroupingByConcurrent(Funktionsklassifikator, Collector downstream) Den returnerer en samtidig Collector, der implementerer en kaskadedelt 'gruppe efter'-operation på input-elementer af type T, grupperer elementer i henhold til en klassifikationsfunktion og udfører derefter en reduktionsoperation på værdierne forbundet med en given nøgle ved hjælp af den specificerede downstream Collector.
offentlig statiskSamlergruppering Efter Samtidig (Funktionsklassifikator, LeverandørkortFactory, Collector downstream) Den returnerer en samtidig Collector, der implementerer en kaskadedelt 'gruppe efter'-operation på input-elementer af type T, grupperer elementer i henhold til en klassifikationsfunktion og udfører derefter en reduktionsoperation på værdierne forbundet med en given nøgle ved hjælp af den specificerede downstream Collector. ConcurrentMap produceret af Collector er oprettet med den medfølgende fabriksfunktion.
offentlig statisk samler> partitioningBy(prædikatprædikat) Det returnerer en Collector, som opdeler input-elementerne i henhold til et prædikat, og organiserer dem i et kort . Der er ingen garantier for typen, mutabiliteten, serialiseringsevnen eller trådsikkerheden af ​​det returnerede kort.
offentlig statisk samlerpartitioningBy(prædikatprædikat, samler nedstrøms) Den returnerer en Collector, som opdeler input-elementerne i henhold til et prædikat, reducerer værdierne i hver partition i henhold til en anden Collector og organiserer dem i et kort, hvis værdier er resultatet af downstream-reduktionen.
offentlig statisk samlertoMap(Function keyMapper, Function valueMapper) Det returnerer en samler, der akkumulerer elementer i et kort, hvis nøgler og værdier er resultatet af at anvende de medfølgende kortlægningsfunktioner på inputelementerne.
offentlig statisk samlertoMap ( Funktion keyMapper , Function valueMapper , BinaryOperator mergeFunction ) . Det returnerer en samler, der akkumulerer elementer i et kort, hvis nøgler og værdier er resultatet af at anvende de medfølgende kortlægningsfunktioner på inputelementerne.
offentlig statiskCollector toMap(FunktionsnøgleMapper, FunktionsværdiMapper, BinaryOperator mergeFunction, LeverandørkortLeverandør) Det returnerer en samler, der akkumulerer elementer i et kort, hvis nøgler og værdier er resultatet af at anvende de medfølgende kortlægningsfunktioner på inputelementerne.
offentlig statisk samlertoConcurrentMap(Function keyMapper, Function valueMapper) Det returnerer en samtidig Collector, der akkumulerer elementer i et ConcurrentMap, hvis nøgler og værdier er resultatet af at anvende de medfølgende kortlægningsfunktioner til inputelementerne.
offentlig statisk samlertoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Det returnerer en samtidig Collector, der akkumulerer elementer i et ConcurrentMap, hvis nøgler og værdier er resultatet af at anvende de medfølgende kortlægningsfunktioner til inputelementerne.
offentlig statiskSamler tilConcurrentMap(FunktionsnøgleMapper, FunktionsværdiMapper, BinaryOperator mergeFunction, LeverandørkortSupplier) Det returnerer en samtidig Collector, der akkumulerer elementer i et ConcurrentMap, hvis nøgler og værdier er resultatet af at anvende de medfølgende kortlægningsfunktioner til inputelementerne.
offentlig statisk Collector summarizingInt(ToIntFunction mapper) Den returnerer en Collector, som anvender en int-producerende kortlægningsfunktion til hvert inputelement og returnerer oversigtsstatistikker for de resulterende værdier.
offentlig statisk Collector summarizingLong(ToLongFunction-kortlægning) Den returnerer en Collector, som anvender en langproducerende kortlægningsfunktion til hvert inputelement og returnerer oversigtsstatistikker for de resulterende værdier.
offentlig statisk Collector summarizingDouble(ToDoubleFunction kortlægger) Den returnerer en Collector, som anvender en dobbeltproducerende kortlægningsfunktion til hvert inputelement og returnerer oversigtsstatistikker for de resulterende værdier.

Java Collectors Eksempel: Henter data som en liste

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

Produktion:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Eksempel på Java-samlere: Konvertering af data som et sæt

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

Produktion:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Java-samlere Eksempel: ved hjælp af summetoden

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

Produktion:

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

Eksempel på Java-samlere: Få produktgennemsnitspris

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

Produktion:

 Average price is: 40200.0 

Java-samlere Eksempel: Tælle elementer

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

Produktion:

 Total elements : 5