Collectors är en sista klass som utökar objektklassen. Det tillhandahåller reduktionsoperationer, såsom att ackumulera element i samlingar, sammanfatta element enligt olika kriterier, etc.
Java Collectors-klassen tillhandahåller olika metoder för att hantera element
Metoder | Beskrivning |
---|---|
public static Collector averagingDouble(ToDoubleFunction mapper) | Den returnerar en Collector som producerar det aritmetiska medelvärdet av en dubbelvärderad funktion som tillämpas på inmatningselementen. Om inga element finns är resultatet 0. |
public static Collector reducering (T-identitet, BinaryOperator op) | Den returnerar en Collector som utför en minskning av sina inmatningselement under en specificerad BinaryOperator med den angivna identiteten. |
offentlig statisk samlare | Den returnerar en Collector som utför en reduktion av dess inmatningselement under en specificerad BinaryOperator. Resultatet beskrivs som ett valfritt. |
public static Collector reducering (U-identitet, Funktionsmappare, BinaryOperator op) | Den returnerar en Collector som utför en reduktion av sina indataelement under en specificerad mappningsfunktion och BinaryOperator. Detta är en generalisering av reducering (Object, BinaryOperator) som tillåter en transformation av elementen före reduktion. |
offentlig statisk samlare | Den returnerar en Collector som implementerar en 'gruppa efter'-operation på indataelement av typ T, grupperar element enligt en klassificeringsfunktion och returnerar resultaten i en karta. |
offentlig statisk samlare | Den returnerar en Collector som implementerar en kaskadad 'grupp efter'-operation på ingångselement av typ T, grupperar element enligt en klassificeringsfunktion och utför sedan en reduceringsoperation på värdena som är associerade med en given nyckel med den specificerade nedströms Collector. |
offentlig statisk | Den returnerar en Collector som implementerar en kaskadad 'grupp efter'-operation på ingångselement av typ T, grupperar element enligt en klassificeringsfunktion och utför sedan en reduceringsoperation på värdena som är associerade med en given nyckel med den specificerade nedströms Collector. Kartan som produceras av Collector skapas med den medföljande fabriksfunktionen. |
offentlig statisk samlare | Den returnerar en samtidig Collector som implementerar en 'gruppa efter'-operation på inmatningselement av typ T, och grupperar element enligt en klassificeringsfunktion. |
offentlig statisk samlare | Den returnerar en samtidig Collector som implementerar en kaskadad 'grupp efter'-operation på inmatningselement av typ T, grupperar element enligt en klassificeringsfunktion och utför sedan en reduceringsoperation på värdena som är associerade med en given nyckel med den specificerade nedströms Collector. |
offentlig statisk | Den returnerar en samtidig Collector som implementerar en kaskadad 'grupp efter'-operation på inmatningselement av typ T, grupperar element enligt en klassificeringsfunktion och utför sedan en reduceringsoperation på värdena som är associerade med en given nyckel med den specificerade nedströms Collector. ConcurrentMap som produceras av Collector skapas med den medföljande fabriksfunktionen. |
offentlig statisk samlare | Den returnerar en Collector som partitionerar inmatningselementen enligt ett predikat och organiserar dem i en karta |
offentlig statisk samlare | Den returnerar en Collector som partitionerar inmatningselementen enligt ett predikat, reducerar värdena i varje partition enligt en annan Collector och organiserar dem i en karta vars värden är resultatet av nedströmsreduktionen. |
offentlig statisk samlare | Den returnerar en Collector som ackumulerar element i en karta vars nycklar och värden är resultatet av att de tillhandahållna mappningsfunktionerna tillämpas på inmatningselementen. |
offentlig statisk samlare | Den returnerar en Collector som ackumulerar element i en karta vars nycklar och värden är resultatet av att de tillhandahållna mappningsfunktionerna tillämpas på inmatningselementen. |
offentlig statisk | Den returnerar en Collector som ackumulerar element i en karta vars nycklar och värden är resultatet av att de tillhandahållna mappningsfunktionerna tillämpas på inmatningselementen. |
offentlig statisk samlare | Den returnerar en samtidig samlare som ackumulerar element i en ConcurrentMap vars nycklar och värden är resultatet av att de tillhandahållna mappningsfunktionerna tillämpas på inmatningselementen. |
offentlig statisk samlare | Den returnerar en samtidig samlare som ackumulerar element i en ConcurrentMap vars nycklar och värden är resultatet av att de tillhandahållna mappningsfunktionerna tillämpas på inmatningselementen. |
offentlig statisk | Den returnerar en samtidig samlare som ackumulerar element i en ConcurrentMap vars nycklar och värden är resultatet av att de tillhandahållna mappningsfunktionerna tillämpas på inmatningselementen. |
public static Collector summarizingInt(ToIntFunction mapper) | Den returnerar en Collector som tillämpar en int-producerande mappningsfunktion på varje inmatningselement och returnerar sammanfattande statistik för de resulterande värdena. |
public static Collector summarizingLong(ToLongFunction mapper) | Den returnerar en Collector som tillämpar en långproducerande mappningsfunktion på varje inmatningselement och returnerar sammanfattande statistik för de resulterande värdena. |
public static Collector summarizingDouble(ToDoubleFunction mapper) | Den returnerar en Collector som tillämpar en dubbelproducerande mappningsfunktion på varje inmatningselement och returnerar sammanfattande statistik för de resulterande värdena. |
Java-samlare Exempel: Hämta data som en lista
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]
Java-samlare Exempel: Konvertera data som en uppsättning
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-samlare Exempel: använder summametoden
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
Exempel på Java-samlare: Få produkts genomsnittspris
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-samlare Exempel: Räkna element
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