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 samler | 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 | 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 samler | 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 statisk | 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 | 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 samler | 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 statisk | 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 | Den returnerer en samler som partisjonerer inngangselementene i henhold til et predikat, og organiserer dem i et kart |
offentlig statisk samler | 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 samler | 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 samler | 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 | 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 samler | 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 samler | 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 | 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