Java Stream Collector

Java Stream Collector
Strumień Java jest sekwencją źródła elementów, które umożliwiają agregatowe operacje. Elementy w strumieniach są obliczane zgodnie z wymaganiami, ale nie są przechowywane. Z drugiej strony klasa JDK Utility ma klasę kolekcjonerów, która ma inne podstawowe metody. Klasa kolekcjonerów ma wstępnie skonfigurowane kolekcjonerów do wykonywania typowych zadań związanych. Elementy grupy zbierania strumienia, oparte na warunku, zmniejsz elementy do jednej wartości (np. Min, Max, Count lub Suma) lub gromadzą elementy w kolekcje. Klasa kolekcjonerów jest zawarta w klasie strumieniowej, dzięki czemu można ją wywołać w strumieniu po wykonaniu dowolnej operacji filtrowania lub mapowania. Potrzeba kolekcjonera, aby dodać elementy ze strumienia do wyznaczonej kolekcji.

Przykład 1:

Metoda kolekcji () służy do generowania listy w poniższym przykładzie. Wdrożenie kolekcjonera, które tworzy nową listę z elementów wejściowych, jest zwracana przez kolekcjonerów.metoda tolist ().

Importuj Java.Util.strumień.Kolekcjonerzy;
Importuj Java.Util.Lista;
Importuj Java.Util.ArrayList;
Perfumy klasowe
int pid;
String pname;
float pprice;
public perfume (int pid, string pname, float pprice)
Ten.PID = PID;
Ten.pname = pname;
Ten.pprice = pprice;


Public Class Collectors1
public static void main (string [] args)
ListperFumesList = new ArrayList ();
PerfumesList.Dodaj (nowe perfumy (1, „Garden of Roses.", 5000f));
PerfumesList.Dodaj (nowe perfumy (2, „Eartymy Wonderland”, 4000f));
PerfumesList.Dodaj (nowe perfumy (3, „Berry Mellow.", 18000f));
ListperFumespriceList =
PerfumesList.strumień()
.mapa (i-> i.pprice)
.Zbieraj (kolekcjonerzy.notować());
System.na zewnątrz.println (perfumespricelist);

Definiujemy klasę „perfum”, w której jej atrybuty są deklarowane jako „pname”, „pid” i „pprice”. Następnie wywołujemy te atrybuty wewnątrz konstruktora funkcji „Perfumes” jako parametr i odniesienia do bieżących atrybutów w tej funkcji za pomocą słowa kluczowego „To”. Następnie konstruujemy główną klasę programu „Collector1”, w której wdrażany jest główny program tego przykładu. Tutaj ustawiamy interfejs listy dla klasy „Perfumes”, aby utworzyć listę w deklarowanej zmiennej „PerfumesList”. Lista zawiera różne wartości dla identyfikatora perfum, nazwy i ceny, które są dodawane za pośrednictwem funkcji add (). Następnie generujemy listę „perfumepricelist”, w której „perfumelista” jest wywoływany metodą strumienia () w celu wygenerowania strumienia wartości perfum. Następnie używamy metody MAP (), aby uzyskać cennik perfum. Klasa kolekcji jest wdrożona, która zabiera kolekcjonerów.tolist () w celu zebrania cen listy perfum i wydrukuj tę listę, która zawiera tylko ceny.

Cenny perfum klasowy jest pobierany za pomocą kolekcjonerów.metoda tolist ().

Przykład 2:

Klasa Java Collector zapewnia różne operacje redukcji. Metoda łączenia () klasy kolekcjonerskich Java jest używana do połączenia kilku elementów postaci lub tablicy ciągu w określonym obiekcie. Ta technika wykonuje to za pomocą strumienia. Klasa kolekcjonerska zawiera kilka przeciążeń metod łączenia.

Importuj Java.Util.Lista;
Importuj Java.Util.strumień.Kolekcjonerzy;
Klasy publiczne kolekcjonerki2
public static void main (string [] args)
var my friends = lista.of („William”, „James”, „Noah”, „Oliver”,
„Lucas”, „Liam”, „Benjamin”);
var joinlist = Myfriends.strumień().Zbieraj (kolekcjonerzy.łączący(","));
System.na zewnątrz.printf („Dołączona lista ciągów: %s”, JoinList);

Mamy Deklaracja zmiennej „Myfriends”, która nazywa się listą.z () metody posiadania prostej niezmiennej implementacji klasy listy. Lista jest dostarczana z różnymi elementami ciągów. Następnie deklarujemy zmienną „dołączając listę”, która najpierw tworzy strumień listy „Myfriends”. Następnie metoda kolekcjonowania () wywołuje metodę kolekcjonerów (). Kolekcjonerzy.Metoda łączenia () dołącza do listy w formie ciągu za pomocą przecinka „”, który jest przekazywany jako argument. Połączona lista łańcucha jest następnie drukowana na konsoli.

Dane wyjściowe, które pokazują określoną listę, łączą kolekcjonerzy.Metoda dołączona ().

Przykład 3:

Metoda statyczna klasy kolekcjonerów Podsumowanie Int () Zwraca statystyki wyników uzyskanych po zbiorze wartości wejściowych podano wdrożoną implementację tointfunction ().

Importuj Java.Util.Tablice;
Importuj Java.Util.IntsummaryStatistics;
Importuj Java.Util.Lista;
Importuj Java.Util.strumień.Kolekcjonerzy;
Importuj Java.Util.strumień.Strumień;
Public Class Collectors3
public static void main (string [] args)

ListNumList = tablice.Aslist (13, 25, 18, 18);
System.na zewnątrz.println („numer ist -” + numList);
StreamNumStream = numList.strumień();
InstsummaryStatisticsNumsummary = Numstream.Zbieraj (kolekcjonerzy.Podsumowanie Int (i -> i));
System.na zewnątrz.println („Statystyka podsumowania strumienia liczb -” + numsummary);

Deklarujemy listę klasy „Numlist”, w którym tablica listy liczb całkowitych jest określona za pomocą metody aslist (). Lista tablicy liczb całkowitych jest wyświetlana z instrukcją drukowania. Następnie tworzymy strumień tej tablicy listy, wywołując metodę Stream () z „numList” w zmiennej „NumStream” klasy strumieniowej. Następnie nazywamy klasę InstsummaryStatistics i deklarujemy obiekt „Numsummary”, w którym metoda kolekcjonowania () otrzymuje podsumowanie listy tablicy z metody i wydruku podsumowującego po wykonaniu programu po utworzeniu programu.

Podsumowanie statystyczne poprzedniej listy tablic jest wyświetlane następująco. Wyświetla sumę, wartość minimalną, maksymalną wartość i średnia wartość.

Przykład 4:

Metoda GroupingBy () klasy kolekcjonerskiej Java jest używana do grupowania elementów zgodnie z atrybutem i przechowywania danych w obiekcie mapy. Ponadto całkowite elementy, które są podane jako parametr w strumieniu, można również policzyć metodą kolekcjonerów liczenia (), która jest przekazywana w metodzie GroupingBy (). Funkcja zwraca kolekcjonera, który akceptuje elementy typu T i zbiera liczbę elementów przychodzących. Wynik metody hrabiego () wynosi zero, jeśli nie ma elementów.

Importuj Java.Util.Tablice;
Importuj Java.Util.Lista;
Importuj Java.Util.Mapa;
Importuj Java.Util.funkcjonować.Funkcjonować;
Importuj Java.Util.strumień.Kolekcjonerzy;
Public Class Collectors4
public static void main (string [] args)
Lista miast =
Tablice.Aslist („Phoenix”, „Houston”,
„New York”, „Phoenix”, „San Diego”, „Houston”);
MapMymap =
Miasta.strumień().zbierać(
Kolekcjonerzy.grupowanie (
Funkcjonować.tożsamość (), kolekcjonerzy.rachunkowość()));
System.na zewnątrz.println (myMap);

Tworzymy listę tablic za pomocą metody aslist () i wstawiamy nazwy unikalnych i powtarzanych miast. Ta lista jest zadeklarowana w zmiennej „miasta” klasy listy. Następnie mamy interfejs mapy, który deklaruje obiekt „MyMap”. Za pośrednictwem tego interfejsu mapy otrzymujemy strumień dostarczonej listy. Następnie wykorzystujemy metodę Collect (), która dodatkowo wykorzystuje metodę klas kolekcjonerskich GroupingBy (). Metoda GroupingBy () grupuje elementy listy, najpierw identyfikując je za pomocą funkcji.Zidentyfikuj () metodę. Następnie liczy liczbę podanych elementów za pomocą metody liczenia () klasy kolekcjonerów. Zgrupowane elementy po przetworzeniu metodami klasy kolektora są wyświetlane przez instrukcję drukowania.

Poniższa lista jest formą grupy. Element powtarzany na liście jest pogrupowany z wartością „2”. Pojedynczy element ma wartość „1”.

Przykład 5:

Klasa kolekcjonerów zawiera inną definicję metody dla kolekcjonowania (). Metoda statyczna kolekcjonerska () klasy kolekcjonerskiej najpierw daje wyniki działania kolekcjonera. Następnie wykonuje się drugą dodatkową transformację wykończeniową.

Importuj Java.Util.Kolekcje;
Importuj Java.Util.Lista;
Importuj Java.Util.strumień.Kolekcjonerzy;
Importuj Java.Util.strumień.Strumień;
Public Class Collectors5
public static void main (string [] args)
StreamStreamElements = Stream.of („jeden”, „dwa”, „trzy”);
ListSynClist = Streamelements.Zbieraj (kolekcjonerzy.kolekcja
Kolekcjonerzy.tolist (), kolekcje :: SynchronizedList));
System.na zewnątrz.println (synclist);


Strumień ciągu jest zdefiniowany w zmiennej „Streamelements” klasy strumieniowej. Następnie podajemy obiekt listy „Synclist” dla synchronizacji listy. Metoda zbierania jest stosowana do strumienia „Streamelements”. Metoda kolekcjonowania () zawiera metodę kolekcjonowania i), która jest dalej stosowana za pomocą metody tolist (). Jednak potrzebujemy niezmiennej listy. Tak więc używamy metody unmodifibleSet () na wygenerowanej liście, aby zwrócić niezmodyfikowalną reprezentację listy. Następnie drukujemy listę niezmodyfikowalną do konsoli.

Poprzednie wyjście programu jest wykonywane w następującym obrazie konsoli Java:

Wniosek

Metoda Java Stream Collect () jest wykorzystywana głównie do dodania elementów strumienia do kolekcji. Elementy w strumieniu są przetwarzane do zmiennej procedury redukcji. Możliwe są zarówno sekwencyjne, jak i jednoczesne procesy redukcji. W przypadku strumienia równoległego obsługuje synchronizację. Klasa kolekcjonerów oferuje liczne wdrożenia kolekcjonerskie, które nam pomogą. Kilka metod z klasy kolekcjonerskiej są wdrażane w tym artykule.