אספנים הוא מחלקה אחרונה שמרחיבה את מחלקת האובייקט. הוא מספק פעולות צמצום, כמו צבירת אלמנטים לאוספים, סיכום אלמנטים לפי קריטריונים שונים וכו'.
שיעור Java Collectors מספק שיטות שונות להתמודדות עם אלמנטים
שיטות | תיאור |
---|---|
אספן סטטי ציבורי ממוצע של כפול (מפה של פונקציות ToDouble) | הוא מחזיר Collector שמפיק את הממוצע האריתמטי של פונקציה בעלת ערך כפול המופעל על רכיבי הקלט. אם אין אלמנטים, התוצאה היא 0. |
הפחתת אספן סטטי ציבורי (זהות T, הפעלה BinaryOperator) | זה מחזיר Collector שמבצע הפחתה של רכיבי הקלט שלו תחת BinaryOperator שצוין באמצעות הזהות שסופקה. |
אספן סטטי ציבורי | זה מחזיר Collector שמבצע הפחתה של רכיבי הקלט שלו תחת BinaryOperator מוגדר. התוצאה מתוארת כאופציונלית. |
הפחתת אספן סטטי ציבורי (זהות U, ממפה פונקציות, הפעלה BinaryOperator) | הוא מחזיר Collector שמבצע הפחתה של רכיבי הקלט שלו תחת פונקציית מיפוי מוגדרת ו-BinaryOperator. זוהי הכללה של הפחתת (Object, BinaryOperator) המאפשרת טרנספורמציה של האלמנטים לפני צמצום. |
אספן סטטי ציבורי | הוא מחזיר Collector המיישם פעולת 'קבוצה לפי' על רכיבי קלט מסוג T, מקבץ אלמנטים לפי פונקציית סיווג ומחזיר את התוצאות במפה. |
אספן סטטי ציבורי | הוא מחזיר Collector המיישם פעולת 'קבוצה לפי' מדורגת על רכיבי קלט מסוג T, מקבץ אלמנטים לפי פונקציית סיווג, ולאחר מכן מבצע פעולת הפחתה על הערכים המשויכים למפתח נתון באמצעות ה-collector שצוין במורד הזרם. |
סטטי ציבורי | הוא מחזיר Collector המיישם פעולת 'קבוצה לפי' מדורגת על רכיבי קלט מסוג T, מקבץ אלמנטים לפי פונקציית סיווג, ולאחר מכן מבצע פעולת הפחתה על הערכים המשויכים למפתח נתון באמצעות ה-collector שצוין במורד הזרם. המפה המיוצרת על ידי האספן נוצרת עם פונקציית המפעל שסופקה. |
אספן סטטי ציבורי | הוא מחזיר Collector במקביל המיישם פעולת 'קבוצה לפי' על רכיבי קלט מסוג T, מקבץ אלמנטים לפי פונקציית סיווג. |
אספן סטטי ציבורי | הוא מחזיר אספן בו-זמנית המיישם פעולת 'קבוצה לפי' מדורגת על רכיבי קלט מסוג T, מקבץ אלמנטים לפי פונקציית סיווג, ולאחר מכן מבצע פעולת הפחתה על הערכים המשויכים למפתח נתון באמצעות אספן למטה שצוין. |
סטטי ציבורי | הוא מחזיר אספן בו-זמנית המיישם פעולת 'קבוצה לפי' מדורגת על רכיבי קלט מסוג T, מקבץ אלמנטים לפי פונקציית סיווג, ולאחר מכן מבצע פעולת הפחתה על הערכים המשויכים למפתח נתון באמצעות אספן למטה שצוין. ה-ConcurrentMap המיוצר על ידי האספן נוצר עם פונקציית המפעל שסופקה. |
אספן סטטי ציבורי | זה מחזיר Collector שמחלק את רכיבי הקלט לפי פרדיקט, ומארגן אותם למפה |
אספן סטטי ציבורי | הוא מחזיר Collector שמחלק את רכיבי הקלט לפי Predicate, מקטין את הערכים בכל מחיצה לפי Collector אחר, ומארגן אותם למפה שהערכים שלה הם תוצאה של ההפחתה במורד הזרם. |
אספן סטטי ציבורי | זה מחזיר Collector שצובר אלמנטים לתוך מפה שהמפתחות והערכים שלה הם תוצאה של החלת פונקציות המיפוי שסופקו על רכיבי הקלט. |
אספן סטטי ציבורי | זה מחזיר Collector שצובר אלמנטים לתוך מפה שהמפתחות והערכים שלה הם תוצאה של החלת פונקציות המיפוי שסופקו על רכיבי הקלט. |
סטטי ציבורי | זה מחזיר Collector שצובר אלמנטים לתוך מפה שהמפתחות והערכים שלה הם תוצאה של החלת פונקציות המיפוי שסופקו על רכיבי הקלט. |
אספן סטטי ציבורי | הוא מחזיר Collector במקביל שצובר אלמנטים לתוך ConcurrentMap שהמפתחות והערכים שלו הם תוצאה של החלת פונקציות המיפוי שסופקו על רכיבי הקלט. |
אספן סטטי ציבורי | הוא מחזיר Collector במקביל שצובר אלמנטים לתוך ConcurrentMap שהמפתחות והערכים שלו הם תוצאה של החלת פונקציות המיפוי שסופקו על רכיבי הקלט. |
סטטי ציבורי | הוא מחזיר Collector במקביל שצובר אלמנטים לתוך ConcurrentMap שהמפתחות והערכים שלו הם תוצאה של החלת פונקציות המיפוי שסופקו על רכיבי הקלט. |
אספן סטטי ציבורי summarizingInt(מפה ToIntFunction) | הוא מחזיר Collector אשר מחיל פונקציית מיפוי מייצרת אינט על כל רכיב קלט, ומחזיר סטטיסטיקות סיכום עבור הערכים המתקבלים. |
אספן סטטי ציבורי מסכםLong(מפה ToLongFunction) | זה מחזיר Collector שמחיל פונקציית מיפוי ארוכת שנים על כל רכיב קלט, ומחזיר סטטיסטיקות סיכום עבור הערכים המתקבלים. |
אספן סטטי ציבורי מסכם Double(ToDoubleFunction ממפה) | הוא מחזיר Collector שמחיל פונקציית מיפוי מייצרת כפולה על כל רכיב קלט, ומחזיר סטטיסטיקות סיכום עבור הערכים המתקבלים. |
דוגמה ל-Java Collectors: שליפת נתונים כרשימה
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); } }
תְפוּקָה:
[25000.0, 30000.0, 28000.0, 28000.0, 90000.0]
דוגמה ל-Java Collectors: המרת נתונים כסט
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); } }
תְפוּקָה:
[25000.0, 30000.0, 28000.0, 90000.0]
דוגמה ל-Java Collectors: שימוש בשיטת sum
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); } }
תְפוּקָה:
Sum of prices: 201000.0 Sum of id's: 15
דוגמה ל-Java Collectors: קבלת מחיר ממוצע למוצר
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); } }
תְפוּקָה:
Average price is: 40200.0
דוגמה ל-Java Collectors: ספירת אלמנטים
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); } }
תְפוּקָה:
Total elements : 5