Ciao, questa è la stanza della NEWSROOM.
E bentornato.
Nell'ultima lezione abbiamo iniziato a esplorare la classe dei collezionisti e abbiamo esaminato due dei suoi
metodi elencare e Doucette non ha creduto che questi metodi fossero fatti in istanze di Collector che era
un'interfaccia sul metodo connect che utilizzava quelle istanze di collector per raccogliere lo stream elementi e
fare una lista dettagliata o un set.
Così abbiamo imparato a raccogliere gli elementi del flusso in una lista o in un set.
E in questa lezione impareremo come raccogliere gli elementi del flusso e fare una mappa sulle mie coppie di
valori precedenti.
Quindi, se stai parlando di come raggruppare gli elementi del flusso perché le mie coppie di valori chiave passate.
Quindi si tratta di raggruppare gli elementi del flusso attorno a determinate chiavi e stiamo andando a guardare i nuovi
metodi per mappare e raggruppare in base a entrambi quelli della stessa classe di collezionisti.
Ed entrambi generano anche un'istanza del collector sull'orologio che li utilizza per raccogliere gli elementi
del flusso in una mappa.
Quindi nel mondo del database abbiamo la clausola GROUP BY.
E qui stiamo facendo qualcosa di simile.
Quindi stiamo applicando la clausola GROUP BY alla raccolta.
Questo è quello che stiamo facendo e siamo scartati all'inizio e lo faremo anche in
modo molto elegante.
E questo perché stiamo usando flussi senza flussi.
Dovremmo scrivere un codice imperativo e questo è ingombrante.
Quindi, scrivendo corte dichiarativa sarà molto elegante.
Quindi esaminerai questi due metodi per mappare e raggruppare per mappa ci permetterebbe di raggruppare gli elementi
in mappa e il valore della chiave sarebbe un valore singolo.
Ma usando group by possiamo avere il valore di essere molto più complicato come un elenco di elementi e possiamo anche fare
lo stesso usando per mappare ma usare per mapparlo sarebbe un po 'più complicato.
Dovremmo scrivere più codice in modo da poter scrivere il codice in un modo più elegante utilizzando il raggruppamento.
Quindi esamineremo entrambe le versioni.
Iniziamo guardando le due mappe mormorate sotto la fine del quale osserveremo il
raggruppamento per metodo.
Così qui ho introdotto questo nuovo metodo chiamato collect to map all'interno di stream operations class e abbiamo la lista dei
libri e sappiamo che i libri provengono da due fonti e così nobili su Amazon.
Quindi iniziamo i libri.
Quindi la pipeline è ciò che stiamo costruendo sotto colorimetro, che prende un collettore, ma il collezionista lo prendiamo
dalla classe dei collezionisti e B come il metodo map map.
E qui abbiamo tre metodi per le due mappe, quindi abbiamo tutti i metodi caricati e scegliamo il
primo su cui stiamo andando a provare l'altra matematica che fa anche qui.
Quindi i nomi dei parametri sono key mapper e value mapper.
Il motivo per cui sono stati nominati e questo è dovuto al fatto che l'input è un libro.
Abbiamo un flusso di libri.
Quindi andremo a scorrere tutti i libri e abbiamo bisogno di ottenere la chiave qui poiché stiamo generando una
mappa.
Abbiamo bisogno di una chiave e di un valore.
Quindi prenderemo la chiave dal libro.
OK.
Quindi mapperemo il libro in una chiave e dovremo fare la stessa cosa anche
per generare valore.
Ora se abbiamo evidenziato qui.
Quindi questa è la firma del metodo sul metodo della mappa.
Ha due parametri come il primo è una funzione per il key mapper.
E il secondo è anche una funzione per il Value Mapper.
E sappiamo che la funzione è una funzione sull'interfaccia.
L'abbiamo guardato prima e viene usato per trasformare un oggetto in un altro.
Quindi in questo caso l'elemento di input sarebbe street sarebbe un libro e vogliamo ottenere la chiave da
esso.
Quindi abbiamo bisogno di una funzione qui.
Quindi abbiamo queste due funzioni e dobbiamo passare lambda per quello in modo che possiamo ottenere la chiave
e i valori.
Quindi per usare il codice ISBN del libro che identifica in modo univoco il libro, quindi metti questo libro.
Quindi prima di prenotare.
Quindi stiamo ricevendo il valore ISBN sul valore, manchiamo di tenerlo come libro stesso.
Quindi la funzione prenderebbe un libro e anche noi abbiamo scritto il libro.
OK.
Quindi l'input sarà la stessa cosa del libro.
L'unica cosa è per la chiave che stiamo ricevendo il codice ISBN per il valore che stiamo
conservando come un libro, ovviamente.
Ora assegniamolo ad una mappa perché una mappa è ciò che genereremo.
Quindi la chiave è l'ISBN che è un valore molto lungo come libro chiamato Map map import qui.
E così quell'ordine.
Quindi andiamo avanti ed eseguilo.
Ora possiamo vedere che c'è un errore.
E il motivo è perché abbiamo le chiavi duplicate.
Quindi è un'eccezione di stato illegale e una chiave duplicata.
Ora questi libri provengono da due fonti.
E se ricordi che ci sono alcuni libri che appaiono in entrambe le fonti.
Quindi ci sono duplicati e i valori ISBN saranno uguali per quei libri duplicati.
Ed è per questo che abbiamo questo abbiamo questo errore.
Quindi c'è una collisione qui con le chiavi e dobbiamo fornire una strategia di risoluzione delle collisioni.
Quindi, per questo, il modo in cui il metodo di mappatura sovraccarico che utilizza un terzo parametro e il
terzo parametro dirà cosa dobbiamo fare quando incontriamo questo tipo di duplicati.
Quindi quello che possiamo fare è quando ci imbattiamo in un duplicato, quindi possiamo scegliere il libro con il prezzo più basso.
Quindi facciamolo.
Quindi lasciatemi commentare
questo in modo che possiamo usare i primi due parametri sono solo la stessa chiave e le coppie di valori
sono qui per il terzo parametro.
Poi c'è una collisione su come si scrive Beaven.
Dobbiamo usare il prezzo.
Quindi otterremo il prezzo Firdous non è
uguale a così è giusto.
Quindi se guardi qui due mappe così ha il mappatore delle chiavi la mappa dei valori o una funzione molto sulla
funzione molto è un operatore binario perché stiamo selezionando due libri che sono dello stesso tipo e
l'uscita sarà anche nel libro.
Che è dello stesso tipo dell'input.
Ecco perché abbiamo bisogno di un operatore binario qui.
Quindi arrivo qui, tutto va bene.
Quindi andiamo avanti e stampiamo ciò che è usato per ogni altro sprint.
Ognuno di essi è piccolo, quindi possiamo dire dart e set mappa e questo darà una mappatura sulla
mappatura come entrata mentre prenoti Scollard e albero Kallen importa la voce
come un
libro.
Quindi se sei un libro e un libro ha un metodo a stringa blu lo abbiamo definito prima.
Quindi non preoccupiamoci, quindi stamperà i libri dayas fagioli sui libri corrispondenti.
Ora qui non importa, non dire hash map.
Quindi proviamo anche questo.
È importante.
Ci sei di nuovo.
Bella risposta.
Vero qui.
Quindi questa è la mappa hash.
Ora vediamo se vogliamo che la mappa sia una mappa ad albero.
Quindi possiamo usare qui il termine overload.
E questo genererà una mappa ad albero.
Quindi, facciamolo anche perché in questo momento, per deserto, trasformando una mappa hash,
diciamo se vogliamo ordinare le chiavi in ordine crescente, avremmo bisogno di una mappa della vittoria e si chiama mappa della storia.
E ho detto che abbiamo bisogno di un terzo parametro qui.
E il barometro si impegna a un fornitore.
Quindi è necessario fornire una mappa crema.
E questa è questa mappa masturbatoria.
Sono qui su questo
Quindi è così.
Ora abbiamo una
mappa dei sogni in modo da poter vedere i valori chiave qui.
Non sono in ordine crescente ma qui ci sono i valori chiave e l'ordine crescente.
OK, così possiamo passare la struttura dati che vogliamo qui.
Quindi è così.
E la prossima cosa è qui e inizia lambda tenere a mente che possiamo anche usare un riferimento al metodo.
OK un po 'di roba rinfrescante qui stiamo passando una lambda.
Quindi l'input e l'output sono gli stessi.
Ogni volta che hai qualcosa di simile puoi farlo anche tu.
Quindi abbiamo l'interfaccia della funzione di funzione e c'è un'identità di metodo me funzione Port.
OK.
Quindi esiste un'identità chiamata metodo statico che questa funzione nella funzione di interfaccia.
Quindi clicco sul retro ed è euchred il codice sorgente.
Quindi, come puoi vedere, questa identità è sottosviluppata, quindi funziona OK e l'istanza di quella
funzione è lambda.
In precedenza avevamo questa particolare espressione lambda che abbiamo definito qui esplicitamente.
Ora invece di farlo, possiamo effettivamente usare questo metodo.
OK, questa è un'interfaccia funzionale funzionale stessa.
Ha anche fatto istanza di funzione onza.
E questo è ciò di cui abbiamo bisogno.
Abbiamo bisogno di un'istanza di funzione qui perché su se sei qui per essere sicuro che la Tuma abbia due
funzioni qui per la chiave e il valore.
Quindi, invece di specificare esplicitamente, possiamo anche solo invocare il metodo di identità.
Questo è quello che normalmente facciamo se abbiamo bisogno di qualcosa del genere.
OK, questo è ciò che noi come la funzione.
Ok, quindi abbiamo lo stesso risultato.
Quindi la funzione viene utilizzata qui per questi due parametri perché abbiamo bisogno di eseguire una trasformazione
dall'oggetto libro a chiave e valore.
Ecco.
Ora così qui il valore come valore singolo.
Ora a volte potremmo desiderare di elencare gli articoli come un valore.
Ad esempio, se abbiamo questi libri su se vogliamo raggruppare quei libri in base alla valutazione, la chiave verrebbe ripetuta e
il valore sarebbe un elenco di libri che rientrano in tale classificazione.
Destra.
Quindi possiamo averlo.
Quindi implementiamo anche che useremo questo metodo simile alla mappa.
Il secondo il secondo movimento può essere usato per quello.
Quindi questa è la cosa.
Ma usiamo i valori dei punti delle mappe ad albero su quello stream del settore.
La ragione è che se useremo la struttura dati di questo libro e se proverai a raggrupparli in base a valutazioni,
allora ciò che può accadere è quando incontriamo quei libri duplicati, quindi uno di loro potrebbe vedere come una valutazione specifica
sull'altro potrebbe avere un diverso valutazione.
Quindi quei libri duplicati potrebbero apparire sotto valutazioni diverse.
Quindi evitiamo questo.
Quindi, dal momento che abbiamo già questa mappa dei sogni sui valori della mappa ad albero, i nostri libri unici
perché in realtà stiamo usando questa funzione in cui selezioniamo solo libri unici.
Se ci sono duplicati, stiamo scegliendo quello con il prezzo più basso.
Ecco, questo è il motivo per cui possiamo semplicemente utilizzare i valori dei dati in quanto ottengono solo libri unici.
Quindi facciamolo.
Ralliers è una raccolta di libri e questo è Stream.
Ora stiamo costruendo un flusso su libri unici.
Quindi qui possiamo noi possiamo ottenere la creazione di ferro per valore.
Deve essere una lista, quindi avremo un libro come input e possiamo usare queste collezioni.
La lista di Darte Singleton e Beeville vengono prodotte in modo da produrre una lista, ma sarebbe come un solo elemento.
Questo è tutto.
Ma quando ci imbattiamo in una seconda valutazione di un libro con la valutazione simile, dobbiamo generare una nuova
lista e il nuovo elenco di come la voce nella lista e anche il nuovo libro.
Quindi per quello abbiamo bisogno di fornire un lambda così qui che ciò che accadrà sarà la grande funzione della
lista.
Quindi l'output di questo verrà immesso in questo perché c'è una collisione.
Quindi questa sarà una lista.
Anche qui l'elemento duplicato e ironizzato farà parte del secondo elenco.
Quindi diciamo questo.
Mettiamo questo a sapere che cosa possiamo fare è invece di dire solo un punto e tutti e due che in realtà se lo
eseguirai ti darà un errore perché sta leggendo una collezione e una raccolta
astratta lì.
Uno dei vecchi metodi confina con un'eccezione operazione non supportata eccezione non supportata.
Quindi abbiamo bisogno di te per poter definire una nuova lista di ordini qui.
Gli avvisi sono la prima lista
su Norbu.
Diciamo che ho letto.
Quindi con questo è come una singola lista che ha sia gli elementi articoli da entrambi la lista e quindi
questo 100 tonnellate un doppio perché la valutazione è doppia.
E dice la lista del libro, quindi i valori saranno molti libri.
E si chiama la mappa dei saluti.
OK, questo è quello
che abbiamo che è stato il dubbio,
ma anche Soldat e reset e lo sversamento Hareton e il trattamento di cross-street stampano la valutazione.
Ora stampiamo tutti i valori poiché è un elenco di cui abbiamo bisogno di un altro ciclo qui.
E ogni voce è un libro.
Quindi, prendre solo prendre non impostato così l'esecutore.
Quindi questo è quello che abbiamo.
Quindi, noi stiamo stampando tutti i libri con buoni voti.
Ora, invece di farlo, possiamo effettivamente usare il raggruppamento per materia.
Quindi lasciami fare.
Bene, abbiamo solo bisogno di questa parte perché è molto più elegante esprimerla in questo modo.
Quindi dì che questo deve essere
raggruppato o
che le cose potrebbero andare su di esso, riportarlo alla desart comune.
Quindi, ancora una volta abbiamo lo stesso risultato, ma usando il raggruppamento da parte nostra e, come puoi vedere usando il raggruppamento,
è molto più semplice.
Non abbiamo bisogno di così tante espressioni diverse, specialmente come questa espressione complicata che abbiamo qui.
Qui è B Abbiamo bisogno di tre parametri su questo è davvero complicato.
Quindi raggruppando in base alla progettazione genererà un valore chiave in cui il valore sarebbe una lista.
OK, questo è il vantaggio dell'utilizzo del raggruppamento per ordinamento come usato quando si desidera che il valore venga letto come un elenco di qualcosa, quindi è
possibile utilizzare il raggruppamento per se si tratta di un valore singolo che è possibile
utilizzare per mappare.
Raggruppare quindi lo rende molto più elegante.
Quindi questo è tutto.
Grazie e spero vi sia piaciuto imparare a raggruppare gli elementi del flusso in do e map.
Grazie.
E felice codifica.