logo

Java samlere

Collectors er en siste klasse som utvider objektklassen. Det gir reduksjonsoperasjoner, som å samle elementer i samlinger, oppsummere elementer i henhold til ulike kriterier, etc.

Java Collectors-klassen gir ulike metoder for å håndtere elementer

Metoder Beskrivelse
offentlig statisk samler gjennomsnittDouble (ToDoubleFunction kartlegger) Den returnerer en samler som produserer det aritmetiske gjennomsnittet av en funksjon med dobbelt verdi brukt på inngangselementene. Hvis ingen elementer er til stede, er resultatet 0.
offentlig statisk Collector-reduserende (T-identitet, BinaryOperator op) Den returnerer en Collector som utfører en reduksjon av input-elementene sine under en spesifisert BinaryOperator ved å bruke den angitte identiteten.
offentlig statisk samlerredusere (BinaryOperator op) Den returnerer en samler som utfører en reduksjon av inngangselementene sine under en spesifisert BinaryOperator. Resultatet er beskrevet som et valgfritt.
offentlig statisk samlereduksjon (U-identitet, funksjonskartlegger, BinaryOperator op) Den returnerer en Collector som utfører en reduksjon av input-elementene under en spesifisert kartfunksjon og BinaryOperator. Dette er en generalisering av reduksjon (Object, BinaryOperator) som tillater en transformasjon av elementene før reduksjon.
offentlig statisk samler> groupingBy(Funksjonsklassifiserer) Den returnerer en samler som implementerer en 'gruppe etter'-operasjon på inngangselementer av type T, grupperer elementer i henhold til en klassifiseringsfunksjon og returnerer resultatene i en kart.
offentlig statisk samlergroupingBy(Funksjonsklassifiserer, Collector nedstrøms) Den returnerer en Collector som implementerer en kaskadedelt 'gruppe etter'-operasjon på inngangselementer av type T, gruppering av elementer i henhold til en klassifiseringsfunksjon, og deretter utfører en reduksjonsoperasjon på verdiene knyttet til en gitt nøkkel ved å bruke den spesifiserte nedstrøms Collector.
offentlig statiskCollector groupingBy(Funksjonsklassifiserer, LeverandørkartFactory, Collector nedstrøms) Den returnerer en Collector som implementerer en kaskadedelt 'gruppe etter'-operasjon på inngangselementer av type T, gruppering av elementer i henhold til en klassifiseringsfunksjon, og deretter utfører en reduksjonsoperasjon på verdiene knyttet til en gitt nøkkel ved å bruke den spesifiserte nedstrøms Collector. Kartet produsert av samleren er laget med den medfølgende fabrikkfunksjonen.
offentlig statisk samler> groupingByConcurrent(Funksjonsklassifiserer) Den returnerer en samtidig samler som implementerer en 'gruppe etter' operasjon på inngangselementer av type T, og grupperer elementer i henhold til en klassifiseringsfunksjon.
offentlig statisk samlergroupingByConcurrent(Funksjonsklassifiserer, Collector nedstrøms) Den returnerer en samtidig Collector som implementerer en kaskadedelt 'gruppe etter'-operasjon på inngangselementer av type T, gruppering av elementer i henhold til en klassifiseringsfunksjon, og deretter utfører en reduksjonsoperasjon på verdiene knyttet til en gitt nøkkel ved å bruke den spesifiserte nedstrøms Collector.
offentlig statiskSamlergruppering Etter Samtidig (Funksjonsklassifiserer, LeverandørkartFactory, Collector nedstrøms) Den returnerer en samtidig Collector som implementerer en kaskadedelt 'gruppe etter'-operasjon på inngangselementer av type T, gruppering av elementer i henhold til en klassifiseringsfunksjon, og deretter utfører en reduksjonsoperasjon på verdiene knyttet til en gitt nøkkel ved å bruke den spesifiserte nedstrøms Collector. ConcurrentMap produsert av Collector er laget med den medfølgende fabrikkfunksjonen.
offentlig statisk samler> partitioningBy(Predikatpredikat) Den returnerer en samler som partisjonerer inngangselementene i henhold til et predikat, og organiserer dem i et kart . Det er ingen garantier for typen, mutabiliteten, serialiserbarheten eller trådsikkerheten til kartet som returneres.
offentlig statisk samlerpartitioningBy(Predikatpredikat, Collector nedstrøms) Den returnerer en Collector som partisjonerer inngangselementene i henhold til et predikat, reduserer verdiene i hver partisjon i henhold til en annen Collector, og organiserer dem i et kart hvis verdier er resultatet av nedstrømsreduksjonen.
offentlig statisk samlertoMap(Function keyMapper, Function valueMapper) Den returnerer en samler som akkumulerer elementer i et kart hvis nøkler og verdier er resultatet av å bruke de oppgitte tilordningsfunksjonene på inndataelementene.
offentlig statisk samlertoMap ( Funksjon keyMapper , Function valueMapper , BinaryOperator mergeFunction ) . Den returnerer en samler som akkumulerer elementer i et kart hvis nøkler og verdier er resultatet av å bruke de oppgitte tilordningsfunksjonene på inndataelementene.
offentlig statiskCollector toMap (FunksjonsnøkkelMapper, Function valueMapper, BinaryOperator mergeFunction, LeverandørkartLeverandør) Den returnerer en samler som akkumulerer elementer i et kart hvis nøkler og verdier er resultatet av å bruke de oppgitte tilordningsfunksjonene på inndataelementene.
offentlig statisk samlertoConcurrentMap(Function keyMapper, Function valueMapper) Den returnerer en samtidig samler som akkumulerer elementer i et ConcurrentMap hvis nøkler og verdier er resultatet av å bruke de angitte tilordningsfunksjonene på inngangselementene.
offentlig statisk samlertoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Den returnerer en samtidig samler som akkumulerer elementer i et ConcurrentMap hvis nøkler og verdier er resultatet av å bruke de angitte tilordningsfunksjonene på inngangselementene.
offentlig statiskCollector toConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Den returnerer en samtidig samler som akkumulerer elementer i et ConcurrentMap hvis nøkler og verdier er resultatet av å bruke de angitte tilordningsfunksjonene på inngangselementene.
offentlig statisk Collector summarizingInt(ToIntFunction kartlegger) Den returnerer en Collector som bruker en int-produserende kartleggingsfunksjon på hvert inngangselement, og returnerer sammendragsstatistikk for de resulterende verdiene.
offentlig statisk Collector summarizingLong(ToLongFunction kartlegger) Den returnerer en Collector som bruker en langproduserende kartleggingsfunksjon på hvert inngangselement, og returnerer sammendragsstatistikk for de resulterende verdiene.
offentlig statisk Collector summarizingDouble(ToDoubleFunction kartlegger) Den returnerer en Collector som bruker en dobbeltproduserende kartleggingsfunksjon på hvert inngangselement, og returnerer sammendragsstatistikk for de resulterende verdiene.

Eksempel på Java-samlere: 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); } } 

Produksjon:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Eksempel på Java-samlere: Konvertering av data som et sett

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

Produksjon:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Java-samlere Eksempel: bruker 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); } } 

Produksjon:

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

Eksempel på Java-samlere: Få produktgjennomsnittspris

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

Produksjon:

 Average price is: 40200.0 

Java-samlere Eksempel: Telle 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); } } 

Produksjon:

 Total elements : 5