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 samler | 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 | 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 samler | 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 statisk | 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 | 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 samler | 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 statisk | 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 | Det returnerer en Collector, som opdeler input-elementerne i henhold til et prædikat, og organiserer dem i et kort |
offentlig statisk samler | 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 samler | 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 samler | 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 | 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 samler | 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 samler | 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 | 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