1
00:00:02,450 --> 00:00:04,610
Ciao, questo è che non vuoi fare anche tu.

2
00:00:04,700 --> 00:00:05,550
Ben tornato.

3
00:00:05,840 --> 00:00:11,190
Diamo un'occhiata a questa caratteristica molto interessante chiamata stream che è stata introdotta in Java

4
00:00:11,210 --> 00:00:16,650
otto insieme ad altre funzionalità come i riferimenti ai metodi di lambast su interfacce di funzione standard.

5
00:00:16,670 --> 00:00:22,640
In effetti, lo streaming è considerato di vitale importanza se i migliori casi d'uso di riferimenti alla materia Ramdass su

6
00:00:22,640 --> 00:00:23,980
interfacce di funzione standard.

7
00:00:24,230 --> 00:00:31,260
Streams è un'API e viene introdotto come parte di un nuovo pacchetto chiamato Java o dot dot strip.

8
00:00:31,710 --> 00:00:38,480
Onstream è un'interfaccia e ha molti metodi su molti dei suoi metodi che usano interfacce di funzione

9
00:00:38,620 --> 00:00:41,070
standard come Metapad sui tubi sporchi.

10
00:00:41,180 --> 00:00:43,760
Quindi quando abbiamo a che fare con flussi anche noi.

11
00:00:43,760 --> 00:00:49,350
In che modo i riferimenti al metodo sulle interfacce di funzione standard entrano in gioco.

12
00:00:49,430 --> 00:00:56,140
Soby come tutte queste principali funzionalità Java entrano in azione quando abbiamo a che fare con i flussi.

13
00:00:56,270 --> 00:01:02,180
OK, quindi sono tutti strettamente legati e questo è tutto ciò che devi ricordare sui flussi.

14
00:01:02,180 --> 00:01:06,970
Si tratta di eseguire sequela come operazioni su collezioni.

15
00:01:07,010 --> 00:01:14,030
Quindi possiamo eseguire alcune operazioni complesse su raccolte che non erano possibili prima dell'8

16
00:01:14,060 --> 00:01:14,650
luglio.

17
00:01:14,960 --> 00:01:17,050
OK, questo è tutto ciò che devi ricordare.

18
00:01:17,270 --> 00:01:21,870
E offre anche il vantaggio di scrivere codice in uno stile dichiarativo.

19
00:01:21,920 --> 00:01:23,250
Ne discuteremo tra un po '.

20
00:01:23,250 --> 00:01:28,310
Non sono mai stato discusso nell'introduzione, ma qui non devono essere solo raccolte.

21
00:01:28,310 --> 00:01:35,420
Possono anche essere gli array Comus in cima all'elenco dei valori o persino gli incendi quando si esegue l'output in ingresso.

22
00:01:35,450 --> 00:01:43,320
Può anche essere altri tipi di fonti, ma in genere si tratta di implementazioni di raccolta come senza ordine.

23
00:01:43,440 --> 00:01:50,340
Quindi abbiamo questo nel nostro mondo di database, quindi abbiamo un database e come le query Escorial che ci aiutano

24
00:01:50,340 --> 00:01:52,790
a manipolare i dati nei loro database.

25
00:01:52,970 --> 00:01:58,120
Sotto-esegui tutti i tipi di operazioni complesse come il filtraggio usando la clausola WHERE.

26
00:01:58,170 --> 00:02:03,140
Le condizioni nella clausola WHERE sono i dati di raggruppamento stanno ordinando alcuni dati.

27
00:02:03,180 --> 00:02:07,010
Siamo l'ordine di come l'arte perduta possiamo anche danneggiare.

28
00:02:07,210 --> 00:02:13,870
Le operazioni di riepilogo come contiamo alcune in media, così possiamo fare tutto questo usando Escorial.

29
00:02:14,190 --> 00:02:20,430
Ma quando si tratta di collezioni nel mondo Java 8, potremmo naturalmente aggiungere qualcosa alla collezione o

30
00:02:20,640 --> 00:02:25,920
possiamo ottenere qualcosa dalla collezione o possiamo anche cercare di andare avanti con altri

31
00:02:25,950 --> 00:02:32,210
tipi di operazioni che sono supportate usando vari metodi ma noi non potrei fare nulla di tutto questo

32
00:02:32,220 --> 00:02:36,100
Non ci sono metodi di un tour che supportano questo tipo di operazioni.

33
00:02:36,190 --> 00:02:38,380
Ducrot possibile negli Stati Uniti.

34
00:02:38,530 --> 00:02:40,960
Come l'ordinamento e la somma di raggruppamento di elementi flitter.

35
00:02:40,970 --> 00:02:47,870
In media, in caso di ricognizione di ordinamento, l'ordinamento esterno utilizzando la classe di raccolte è nel Sautner.

36
00:02:48,090 --> 00:02:53,340
Ma all'interno dell'interfaccia di raccolta stessa o dell'interfaccia listener stessa non esisteva alcun metodo

37
00:02:53,410 --> 00:03:00,930
come il socket e quando si trattava di ricapitolare Ishan potevamo ovviamente fare codice usando il metodo size size method e

38
00:03:00,930 --> 00:03:07,680
la collection ma non potevamo fare un po 'di media in Per fare questo tipo di operazioni dovevamo scrivere

39
00:03:07,680 --> 00:03:09,020
il nostro quarto.

40
00:03:09,030 --> 00:03:14,880
Abbiamo dovuto prendere una capra personalizzata in modo che uno dei limiti nella scrittura di tale codice personalizzato non sia leggibile.

41
00:03:14,880 --> 00:03:19,340
Il codice non è leggibile sul secondo numero in quanto non è facilmente parallelizzabile.

42
00:03:19,720 --> 00:03:23,640
Quindi dobbiamo riscrivere il codice per renderlo appetibile.

43
00:03:23,670 --> 00:03:27,950
È un sapone molto noioso per affrontarlo.

44
00:03:28,070 --> 00:03:35,050
Java 8 ha introdotto l'API di streaming che fa parte di questo nuovo pacchetto chiamato punto punto punto punto punto.

45
00:03:35,050 --> 00:03:41,370
Possiamo fare tutte queste operazioni come filtrare il raggruppamento e l'ordinamento e anche le operazioni di riepilogo.

46
00:03:41,540 --> 00:03:45,680
Quindi i metodi di Stream White API per fare questo in modo che.

47
00:03:45,890 --> 00:03:52,100
Tutti i limiti non sono i benefici sono quelli di subire benefici quindi gli sviluppatori non hanno bisogno di scrivere

48
00:03:52,100 --> 00:03:58,140
quel tribunale personalizzato in modo che possano semplicemente esprimere ciò che vogliono nel lavorare con i diversi metodi.

49
00:03:58,160 --> 00:04:01,280
Questa è una metafora in corso, c'è una questione di raggruppamento.

50
00:04:01,290 --> 00:04:07,280
Sto selezionando questo tipo di cose e puoi cambiare questi metodi, così facendo stiamo scrivendo

51
00:04:07,280 --> 00:04:12,370
dichiarativo e non leccare semplicemente esprimendo ciò che lui o lei vuole.

52
00:04:12,500 --> 00:04:19,790
Quindi il risultato di questo è quanto il codice più pulito sul campo è anche facilmente parallelizzabile.

53
00:04:19,900 --> 00:04:26,400
Ora abbiamo visto questo esempio e l'engro conferenza per motivarci a studiare i flussi.

54
00:04:26,710 --> 00:04:33,130
Quindi qui l'obiettivo è categorizzare i libri in modo da avere un elenco di libri nel frigo

55
00:04:33,130 --> 00:04:35,530
per commentare, vogliamo categorizzarli per categoria.

56
00:04:35,540 --> 00:04:41,440
E vogliamo anche classificare solo quei libri che possono descrivere l'OP con la valutazione del libro è almeno

57
00:04:41,500 --> 00:04:47,380
quattro punti cinque sul risultato finale di questo sarà memorizzato in questa mappa di hash chiamato libri

58
00:04:47,380 --> 00:04:48,280
per categoria.

59
00:04:48,430 --> 00:04:53,730
Ma la chiave è la categoria e il valore è un elenco di libri che rientrano in quella categoria.

60
00:04:53,770 --> 00:04:59,660
Quindi questo si chiama come in me, ma io programma e questo è ciò che abbiamo fatto attraverso il nostro discorso.

61
00:04:59,800 --> 00:05:06,040
No, come ho appena detto, è facile scrivere questo, ma non è così difficile, ma leggerlo è un

62
00:05:06,040 --> 00:05:08,370
po 'difficile è un po' illeggibile.

63
00:05:08,590 --> 00:05:15,450
E come ho appena detto, la discordia è impegnata a lavorare in modo sequenziale e in un singolo ambiente thread.

64
00:05:15,580 --> 00:05:20,210
Quindi se vogliamo una battaglia come questa, dobbiamo riscriverla e questo è molto doloroso.

65
00:05:21,400 --> 00:05:27,250
Quindi su Internet abbiamo anche affermato che la stessa logica può essere espressa in un modo molto più

66
00:05:27,250 --> 00:05:29,870
pulito in questo modo usando l'API degli stream.

67
00:05:29,890 --> 00:05:36,190
Quindi, ancora una volta qui abbiamo i libri sulla lista sono benedetti e stiamo invocando un metodo chiamato

68
00:05:36,760 --> 00:05:40,650
stream onstream è essenzialmente un metodo nell'interfaccia di raccolta stessa.

69
00:05:40,750 --> 00:05:48,700
Quindi è stata introdotta nell'interfaccia di connessione in Java 8 sotto le tende un'istanza fuori dall'interfaccia di streaming

70
00:05:48,820 --> 00:05:53,390
e l'interfaccia di vapore ha questi metodi come tale unclick.

71
00:05:53,440 --> 00:05:59,320
Quindi stiamo invocando il metodo del filtro e l'importo che stiamo passando per la Lamda, che non è altro che la

72
00:05:59,320 --> 00:06:02,430
valutazione del libro che deve essere maggiore di un file.

73
00:06:02,440 --> 00:06:04,350
Quindi è abbastanza buono.

74
00:06:04,470 --> 00:06:12,760
E il filtro restituisce anche un'altra istanza dell'interfaccia di flusso in modo che siamo in grado di raccogliere il metodo in

75
00:06:12,760 --> 00:06:17,910
modo da filtrare e raccogliere i nostri due metodi nell'interfaccia del flusso.

76
00:06:18,110 --> 00:06:21,560
E abbiamo anche il raggruppamento per metrica e ne discuteremo più tardi.

77
00:06:21,790 --> 00:06:28,750
Ma come puoi vedere il filtro e il raggruppamento e fare clic insieme stanno eseguendo la stessa

78
00:06:29,050 --> 00:06:32,890
operazione che stiamo eseguendo grette la programmazione imperativa chiamata.

79
00:06:32,940 --> 00:06:35,240
Quindi questa è la programmazione decrementale.

80
00:06:35,240 --> 00:06:38,720
E come puoi vedere è molto pulito ed è anche molto efficiente.

81
00:06:39,880 --> 00:06:46,630
E ciò che sta accadendo qui è che stiamo facendo un'iterazione interna così lo sviluppatore sta semplicemente specificando ciò che

82
00:06:46,630 --> 00:06:51,220
lui o lei vuole che vogliono un filtro o qualcosa e vogliono raggruppare.

83
00:06:51,430 --> 00:06:57,510
Ma l'iterazione e il raggruppamento effettivi sono fatti internamente all'interno di questi metodi.

84
00:06:57,520 --> 00:07:00,210
Quindi questo è ciò che sta accadendo anche in segreto.

85
00:07:00,520 --> 00:07:06,460
Quindi in sequenza abbiamo queste query per il filtraggio abbiamo la croce rossa e per il raggruppamento abbiamo la

86
00:07:06,460 --> 00:07:07,460
clausola group by.

87
00:07:07,720 --> 00:07:13,840
Ma esattamente come l'hanno fatto, sotto il raggruppamento, si è preso cura internamente dei dati.

88
00:07:13,960 --> 00:07:19,300
Allo stesso modo anche qui l'iterazione è gestita internamente dall'API del flusso.

89
00:07:19,600 --> 00:07:23,260
Quindi quello che otteniamo qui è una migliore astrazione.

90
00:07:23,290 --> 00:07:28,990
Quindi otteniamo la migliore astrazione, semplicemente specifichiamo ciò di cui abbiamo bisogno e il modo in cui deve essere fatto è

91
00:07:28,990 --> 00:07:31,470
un dettaglio dell'implementazione che viene inserito in questi metodi.

92
00:07:32,790 --> 00:07:38,010
Ora sogna il flusso di McPartland, l'intera competizione è paralizzata.

93
00:07:38,280 --> 00:07:44,110
Quindi Gibeah sarebbe in grado di sfruttare il diverso corso nel sistema sotto per essere in grado di

94
00:07:44,340 --> 00:07:47,180
paralizzare la concorrenza e renderla molto più efficiente.

95
00:07:47,580 --> 00:07:53,780
Quindi questo è quello che otteniamo qui, nel dichiarare la de-programmazione di qualche mascella e dei vostri ingegneri senior.

96
00:07:53,990 --> 00:07:58,430
In realtà diciamo che in futuro il tribunale sarà scritto in questo modo.

97
00:07:58,430 --> 00:08:03,980
Quindi dicono che potrebbe essere un mix di programmazione orientata agli oggetti anche dichiarata la de-programmazione che non

98
00:08:03,980 --> 00:08:06,160
è altro che qui la programmazione funzionale.

99
00:08:06,320 --> 00:08:10,220
Quindi sarebbe un mix di programmazione orientata agli oggetti e funzionale.

100
00:08:10,220 --> 00:08:13,370
Quindi quello che stiamo ottenendo qui è un ordine più elegante.

101
00:08:13,880 --> 00:08:19,430
Quindi, il vantaggio principale di riassumere i flussi di bit, siamo in grado di eseguire operazioni più complesse

102
00:08:19,430 --> 00:08:22,140
su raccolte che non sono possibili in precedenza.

103
00:08:22,190 --> 00:08:24,500
Quindi siamo in grado di eseguire operazioni sequela.

104
00:08:24,800 --> 00:08:30,720
Ma così facendo stiamo scrivendo una citazione di stile dichiarativa sotto un codice di stile dichiarativo.

105
00:08:30,770 --> 00:08:36,420
Abbiamo questi vantaggi di un bene pulito chiaro ed efficiente e un parallelizzabile totale.

106
00:08:36,440 --> 00:08:41,690
Ora un'ultima cosa è così qui abbiamo Lamda noi e riferimento Motard.

107
00:08:41,690 --> 00:08:45,590
E questi sono ciò che ci consente di abbracciare i flussi.

108
00:08:45,620 --> 00:08:52,190
Quindi queste funzionalità stanno permettendo agli sviluppatori di abbracciare i flussi di streaming potrebbero anche essere

109
00:08:52,280 --> 00:08:59,810
stati introdotti prima dell'8 luglio ma prima dell'8 luglio non ci sono state bloccate le differenze Armato quindi avremmo usato

110
00:08:59,810 --> 00:09:06,870
oggetti anonimi e sappiamo che gli oggetti anonimi non sono vobis e non lo farebbero Ho reso i

111
00:09:06,880 --> 00:09:07,750
flussi attraenti.

112
00:09:08,050 --> 00:09:08,330
Destra.

113
00:09:08,360 --> 00:09:11,010
Quindi c'era una spinta da fare e come i flussi di Ambrish.

114
00:09:11,030 --> 00:09:18,410
Quindi per utilizzare gli stream abbiamo bisogno di qualcosa come lambda sui riferimenti ai metodi che sono molto più

115
00:09:18,410 --> 00:09:26,010
concisi da esprimere e questo è ciò che ci consente di utilizzare gli stream e anche sviluppare altre potenti librerie.

116
00:09:26,030 --> 00:09:27,600
Quindi questo è un buon esempio.

117
00:09:27,620 --> 00:09:33,100
Ma ora passiamo al mio editor e implementiamo effettivamente il nostro programma dimostrativo.

118
00:09:33,110 --> 00:09:37,650
Quindi prima abbiamo scritto il programma di indicizzazione che trattava l'elaborazione delle pagine.

119
00:09:37,790 --> 00:09:40,010
Quindi non è stato fatto in modo imperativo.

120
00:09:40,010 --> 00:09:45,140
Ora convertiamolo in stile dichiarativo e vediamo tutto in azione.

121
00:09:45,290 --> 00:09:49,520
OK, vediamo una vera programmazione di stile funzionale in azione.

122
00:09:49,850 --> 00:09:51,770
Quindi andiamo al mio editore per questo.

123
00:09:53,810 --> 00:09:58,230
Sei arrivato così lontano quest'anno ho creato questa nuova classe chiamata Strange demo.

124
00:09:58,380 --> 00:10:04,800
So che tutta la discordia dalla funzione li interfaccia tutto ciò che abbiamo visto in precedenza in questa nuova

125
00:10:04,800 --> 00:10:07,620
classe ed è stato ripulito un po '.

126
00:10:07,650 --> 00:10:09,920
Quindi la funzionalità principale è stata spostata qui.

127
00:10:09,930 --> 00:10:16,400
Ora una Ginia fatta come la funzione della saggezza o prima era in un pacchetto chiamato lambda noi sotto il

128
00:10:16,410 --> 00:10:17,910
discorso comune semantico Square.

129
00:10:17,910 --> 00:10:22,970
Così ho rinominato il pacchetto come il quadrato di Comdex Atlantic non funzionante.

130
00:10:23,150 --> 00:10:24,000
E questo è tutto.

131
00:10:24,000 --> 00:10:28,080
Quindi abbiamo le tre classi che avevamo in precedenza per i flussi.

132
00:10:28,110 --> 00:10:34,540
Questa nuova demo di stream di classe è stata creata con questo nuovo pacchetto Suppe sotto funzionale chiamato stream.

133
00:10:34,680 --> 00:10:38,860
OK, quindi tutte le classi di classi correlate ai flussi andranno sotto questo nuovo pacchetto.

134
00:10:39,090 --> 00:10:45,930
OK, questo è ciò che abbiamo demo di stream e abbiamo già il tribunale imperativo e stiamo andando

135
00:10:45,930 --> 00:10:47,560
a dichiarare o giudicare.

136
00:10:47,650 --> 00:10:49,610
Ecco come lo testeremo.

137
00:10:49,840 --> 00:10:55,360
Quindi qui abbiamo i quattro documenti ei quattro documenti che si sono accumulati in questo

138
00:10:55,360 --> 00:11:01,670
elenco chiamato documenti e quindi abbiamo questo in meglio a Metford, che è stato calpestato dal metodo principale.

139
00:11:01,810 --> 00:11:06,360
E ovviamente abbiamo la classe dell'indice all'interno del metodo imperativo.

140
00:11:06,760 --> 00:11:11,740
Tutto quello che stiamo facendo è che stiamo elaborando i documenti e quindi abbiamo questo predicato in

141
00:11:12,130 --> 00:11:14,940
cui stiamo portando il documento riguarda questo chiamato Stream.

142
00:11:15,140 --> 00:11:18,790
E se è allora stiamo eseguendo due trasformazioni.

143
00:11:18,820 --> 00:11:20,740
Quindi abbiamo qui il codice di trasformazione.

144
00:11:20,890 --> 00:11:26,570
Quindi siamo nel rooking della striscia che ha attaccato il tuo metodo fiscale e l'indicizzatore per fare la trasformazione.

145
00:11:26,740 --> 00:11:30,640
E per la seconda trasformazione stiamo rimuovendo gli snowbirds.

146
00:11:31,040 --> 00:11:34,520
E viene assegnato all'interfaccia standard della funzione.

147
00:11:34,570 --> 00:11:36,740
Quindi questa è la corte imperativa.

148
00:11:36,760 --> 00:11:39,810
Ora vediamo come possiamo leggere il codice dichiarativo.

149
00:11:39,940 --> 00:11:44,010
Quindi ho alcuni commenti qui e ho intenzione di costruire su questo.

150
00:11:44,050 --> 00:11:51,310
Quindi, per implementare il flusso, costruiamo qualcosa chiamato come una pipeline di flusso che è una struttura comune che abbiamo

151
00:11:51,310 --> 00:11:54,600
e abbiamo a che fare con i flussi.

152
00:11:55,180 --> 00:11:57,640
E qui ci sono tre cose che facciamo.

153
00:11:57,640 --> 00:12:03,550
Uno è necessario impostare una fonte, una fonte può essere qualcosa come un'implementazione di una raccolta o non

154
00:12:03,550 --> 00:12:06,400
è su un ID o su altre fonti.

155
00:12:06,400 --> 00:12:07,950
Possono esserci anche altre fonti.

156
00:12:08,020 --> 00:12:10,440
Quindi una volta configurata la sorgente del flusso.

157
00:12:10,640 --> 00:12:16,630
Va bene, solo in caso di raccolta, sappiamo del metodo di flusso, quindi B come Zuda

158
00:12:16,630 --> 00:12:22,790
sono più operazioni intermedie e B come un termine finale in un'operazione che essenzialmente domina una stringa.

159
00:12:23,260 --> 00:12:25,850
Okay, questo è quello che abbiamo qui.

160
00:12:26,230 --> 00:12:33,190
L'impostazione della sorgente del flusso è analoga a quella dei bibbieri nella scuola proprio nella scuola, sarà il

161
00:12:33,190 --> 00:12:36,440
modo in cui selezioniamo l'inizio da alcune tabelle.

162
00:12:36,580 --> 00:12:38,970
Quindi quelle tabelle sono la fonte giusta.

163
00:12:39,010 --> 00:12:45,010
Allo stesso modo, abbiamo una fonte qui su queste operazioni intermedie sarebbe qualcosa come il filtraggio

164
00:12:45,100 --> 00:12:48,100
o la trasformazione o il raggruppamento così.

165
00:12:48,190 --> 00:12:51,990
Quindi sono come le condizioni sono quelle che verranno dalle clausole.

166
00:12:52,120 --> 00:12:52,690
Va bene.

167
00:12:52,900 --> 00:12:57,090
E ciascuna delle operazioni allora intermedie la storia scritta.

168
00:12:57,190 --> 00:13:03,010
OK, quindi, prima ci siamo concentrati sul filtro e sul filtro cholic, in sostanza sull'effetto filtro e

169
00:13:03,010 --> 00:13:06,280
sono stati scritti in streaming un'istanza stirata a monte.

170
00:13:06,310 --> 00:13:08,460
Quindi questa è un'operazione intermedia.

171
00:13:08,470 --> 00:13:15,430
Allo stesso modo, c'è anche un operazione che possiamo fare ora qui lascia che esegua

172
00:13:17,920 --> 00:13:21,500
questo, quindi questo è quello che abbiamo.

173
00:13:24,300 --> 00:13:25,410
Questo è quello che abbiamo qui.

174
00:13:25,410 --> 00:13:29,940
Quindi due dei documenti vengono stampati dai quattro perché ci sono due

175
00:13:29,940 --> 00:13:31,460
dei documenti della strada.

176
00:13:31,770 --> 00:13:34,590
Quindi ora questo è quello che abbiamo fatto qui.

177
00:13:34,590 --> 00:13:40,070
Quindi a me le operazioni sono chiamate pigre e ho intenzione di spiegare il motivo per cui è

178
00:13:40,080 --> 00:13:42,020
chiamato così sull'operazione terminale, così chiamata.

179
00:13:42,060 --> 00:13:44,710
Quindi lo consideriamo mentre scriviamo il codice.

180
00:13:44,760 --> 00:13:48,810
Quindi andiamo avanti e diciamo che abbiamo i documenti.

181
00:13:48,870 --> 00:13:50,170
Quindi questa è la lista.

182
00:13:50,370 --> 00:13:56,790
E siamo solo in disaccordo là che è stato introdotto nell'interfaccia di raccolta come ho detto prima.

183
00:13:56,880 --> 00:14:01,070
Quindi questo è ciò che viene presentato qui ora sul flusso.

184
00:14:01,080 --> 00:14:04,650
Quindi l'interfaccia di Richardson sull'interfaccia del flusso.

185
00:14:04,710 --> 00:14:08,330
Quindi andiamo avanti e invochiamo il metodo del filtro.

186
00:14:08,580 --> 00:14:15,060
OK, con questo stiamo ottenendo un flusso in modo che tu possa pensare a un flusso come sai solo un flusso di

187
00:14:15,170 --> 00:14:19,410
qualcosa a monte di tutti i documenti e noi elaboreremo ciascuno di quei documenti.

188
00:14:19,500 --> 00:14:22,610
Quindi invochiamo il metodo di filtro perché è quello che dobbiamo fare.

189
00:14:22,620 --> 00:14:30,260
La prima cosa ed è proprio sopra lambda.

190
00:14:30,510 --> 00:14:32,260
Quindi questo è un predicato.

191
00:14:32,310 --> 00:14:33,980
Quindi se guardi lo streaming qui.

192
00:14:34,080 --> 00:14:35,560
Quindi questo è piuttosto drammatico.

193
00:14:35,700 --> 00:14:37,320
Quindi accetta un predicato.

194
00:14:37,320 --> 00:14:39,300
Quindi questo è essenzialmente ciò che stiamo facendo qui.

195
00:14:39,310 --> 00:14:41,560
Quindi lo stiamo assegnando a un predicato.

196
00:14:41,880 --> 00:14:45,120
Ma qui stiamo facendo uso dell'API dei flussi.

197
00:14:45,420 --> 00:14:50,130
Quindi una volta che il filtraggio è ciò di cui abbiamo bisogno, dobbiamo trasformarci.

198
00:14:50,160 --> 00:14:56,610
Quindi, quale trasformazione esegue lo streaming perché il filtro restituirà un altro flusso un'altra istanza del flusso

199
00:14:56,610 --> 00:15:00,160
che inizia a funzionare e quella che può mappare.

200
00:15:00,570 --> 00:15:09,330
Quindi lo stream ha una rete che può mappare e all'interno della prima mappa dalla trasformazione di trasformazione.

201
00:15:09,650 --> 00:15:12,650
Nella seconda mappa andremo a casa la seconda trasformazione.

202
00:15:12,830 --> 00:15:18,500
Quindi la prima trasformazione sta semplicemente invocando questa striscia che GM attacca, così possiamo solo copiare

203
00:15:21,530 --> 00:15:28,460
quel così ductwork di forma la prima trasformazione e questa è anche la seconda trasformazione che sta rumorizzando la

204
00:15:28,610 --> 00:15:29,330
fine

205
00:15:36,830 --> 00:15:39,010
sembra che stiamo solo stampando qui.

206
00:15:39,230 --> 00:15:40,160
Quindi per quello.

207
00:15:40,350 --> 00:15:41,410
Quindi mappalo anche.

208
00:15:41,420 --> 00:15:46,190
Quindi entrambe queste tre sono operazioni intermedie e tutte sono eseguite nella mappa del flusso d'aria

209
00:15:46,190 --> 00:15:50,390
che azzarda un flusso e filtra il tipo di aggiunta di un flusso.

210
00:15:50,390 --> 00:15:55,440
Quindi, questo significa che finalmente possiamo invocare un'altra chiamata al metodo per ciascuno di

211
00:15:58,810 --> 00:16:03,740
essi, quindi le puntate e il consumatore su di esso è un'operazione terminale.

212
00:16:03,740 --> 00:16:06,330
Quindi con questo finiremo il flusso.

213
00:16:06,350 --> 00:16:12,090
Quindi lasciami andare avanti e stampare questo.

214
00:16:12,130 --> 00:16:18,520
Quindi qui mi permetta anche la discesa comune con questo strumento a strisce che abbiamo questa affermazione e rimarrà senza

215
00:16:18,550 --> 00:16:19,700
commenti più tardi.

216
00:16:19,810 --> 00:16:22,480
Quindi andiamo avanti e gestiamo questo.

217
00:16:22,510 --> 00:16:29,260
Quindi, come puoi vedere, abbiamo esattamente lo stesso risultato qui e lo facciamo come dichiarante.

218
00:16:29,490 --> 00:16:34,430
E possiamo vedere che è così ben scritto e molto elegante.

219
00:16:34,810 --> 00:16:35,980
Quindi questo è quello che abbiamo.

220
00:16:36,280 --> 00:16:40,930
E la prossima cosa di cui voglio parlare riguarda le operazioni pigre.

221
00:16:40,950 --> 00:16:47,140
Ha detto che queste operazioni intermedie sono operazioni facili, il che significa che non ci sarà

222
00:16:47,440 --> 00:16:49,010
esecuzione con l'invocazione qui.

223
00:16:49,030 --> 00:16:53,360
Quindi non verranno eseguiti sotto l'invocazione di ciascun metodo.

224
00:16:53,590 --> 00:16:56,500
OK finora ogni metodo è un'operazione dell'ego.

225
00:16:56,500 --> 00:17:04,360
Quindi, solo quando GBM uscirà da questa istanza di dati, eseguirà queste diverse operazioni

226
00:17:04,360 --> 00:17:08,650
intermedie che queste operazioni non verranno eseguite.

227
00:17:08,800 --> 00:17:10,630
Quindi, guardiamolo veramente.

228
00:17:11,020 --> 00:17:12,540
Lascia che te lo dimostri.

229
00:17:12,550 --> 00:17:15,170
Quindi mettiamo quel punto e virgola qui.

230
00:17:15,450 --> 00:17:17,940
Intendo questo comune.

231
00:17:18,040 --> 00:17:19,550
Quindi qui questa è una mappa.

232
00:17:19,660 --> 00:17:26,220
Sta andando a leggere su un flusso di stringa.

233
00:17:26,320 --> 00:17:28,420
Si chiama estremo.

234
00:17:28,440 --> 00:17:33,320
OK, questo è quello che abbiamo su lascia correre.

235
00:17:33,380 --> 00:17:37,550
Quindi, come puoi vedere, non c'è output che sia noto per ogni affermazione.

236
00:17:37,550 --> 00:17:39,640
Lascia che riporti anche questa cosa.

237
00:17:39,770 --> 00:17:51,330
Vedi ora puoi vedere che nell'angolo imperativo sprintare questa affermazione stampata che è dentro la stupidità della mia tassa, ma

238
00:17:51,330 --> 00:17:59,480
qui non sappiamo come dichiararlo in tribunale che nessuno di questi viene eseguito.

239
00:17:59,490 --> 00:18:03,310
Quindi non siamo la stupidità del mio metodo fiscale non è stato nel mio libro.

240
00:18:03,390 --> 00:18:06,240
Quindi abbiamo solo queste e queste sono operazioni pigre.

241
00:18:06,240 --> 00:18:13,040
Ora lasciatemi solo trarre vantaggio da questo, perché possiamo fare in modo che

242
00:18:13,040 --> 00:18:19,380
possiamo passare questo sogno a cui è stata data questa questione.

243
00:18:19,600 --> 00:18:30,870
Quindi chiarirò la questione e dirò solo OK.

244
00:18:30,890 --> 00:18:34,510
Quindi abbiamo questo barometro come flusso di forza.

245
00:18:34,910 --> 00:18:36,110
Quindi questo è quello che abbiamo.

246
00:18:36,300 --> 00:18:40,560
E se lo gestiamo ora possiamo vedere che otteniamo la speranza.

247
00:18:40,730 --> 00:18:41,930
Quindi, se

248
00:18:45,210 --> 00:18:52,230
chiamo Mundus non-ufficio non offerto come essere eseguito perché queste sono operazioni pigre ma se non commento su

249
00:18:52,360 --> 00:18:56,880
di esso ironico si vede l'output perché abbiamo l'operazione ottimale qui.

250
00:18:56,920 --> 00:18:58,430
Quindi questa è la cosa ora.

251
00:18:58,450 --> 00:19:00,760
Quindi qui la fonte è questa.

252
00:19:00,970 --> 00:19:07,660
Quindi puoi vedere che l'output è esattamente identico, il che significa che stiamo iterando attraverso i documenti nello

253
00:19:07,660 --> 00:19:08,380
stream.

254
00:19:08,380 --> 00:19:15,880
Quindi applichiamo il filtro sul primo filtro sul primo documento e poi se ha la

255
00:19:15,880 --> 00:19:19,980
parola stream, quel documento viene trasformato qui.

256
00:19:20,080 --> 00:19:23,640
Ecco perché abbiamo pacchetti geometrici ricchi di strisce.

257
00:19:23,850 --> 00:19:24,320
OK.

258
00:19:24,340 --> 00:19:31,220
E poi dopo stiamo facendo un'altra trasformazione e quindi stiamo stampando qui.

259
00:19:31,430 --> 00:19:32,700
Così.

260
00:19:32,830 --> 00:19:38,650
Quindi non è come stiamo facendo le trasformazioni agitate su tutti i documenti e quindi stiamo stampando.

261
00:19:38,650 --> 00:19:40,400
Quindi non sta succedendo qui.

262
00:19:40,540 --> 00:19:45,550
Quindi sta accadendo le operazioni sono esattamente identiche a come sta accadendo e alla

263
00:19:45,550 --> 00:19:46,530
corte imperativa.

264
00:19:46,780 --> 00:19:52,570
Quindi stiamo elaborando un documento alla volta e se passa il predicato allora applichiamo

265
00:19:52,570 --> 00:19:53,710
le trasformazioni.

266
00:19:53,740 --> 00:19:55,120
E poi lo stampiamo.

267
00:19:55,150 --> 00:20:00,130
Questo è esattamente ciò che sta accadendo, quindi la funzionalità è identica.

268
00:20:00,130 --> 00:20:02,790
È solo un codice molto più elegante.

269
00:20:02,910 --> 00:20:08,220
Ora come ho detto prima, la fonte può essere qualcosa e immagazzinarla non deve essere solo un flusso.

270
00:20:08,220 --> 00:20:14,910
Quindi lasciatemi commentare questo e lasciami dire che questa classe mi permetta di usare il vetro

271
00:20:14,970 --> 00:20:20,300
dell'artista, ha questo nuovo metodo chiamato Dream e possiamo passare un'idea qui.

272
00:20:20,300 --> 00:20:25,780
Quindi qui vogliamo utilizzare un ID come fonte per lo stream.

273
00:20:25,820 --> 00:20:37,850
Quindi vediamo Neil.

274
00:20:37,980 --> 00:20:43,990
Quindi stiamo passando un flusso e questa volta abbiamo l'idea come fonte.

275
00:20:44,160 --> 00:20:47,030
Quindi, se corriamo di nuovo, sarà lo stesso risultato.

276
00:20:47,250 --> 00:20:54,210
Oppure possiamo anche dire che possiamo avere anche un elenco di operatori virgola per questo che non è il mio terzo trimestre

277
00:20:54,270 --> 00:20:55,700
qui nell'interfaccia del flusso.

278
00:20:55,950 --> 00:21:02,100
Quindi possiamo solo invocarlo e possiamo passare tutti questi documenti come elenco di valori dell'operatore commerciale

279
00:21:05,460 --> 00:21:07,020
con il metodo off.

280
00:21:07,260 --> 00:21:09,530
Soit prende ciò che il nostro esperto dilettante.

281
00:21:09,720 --> 00:21:15,770
Quindi, se sei di nuovo su questo, abbiamo lo stesso risultato.

282
00:21:15,770 --> 00:21:22,850
Quindi in sintesi l'API dei flussi ci consente di trarre da alcune gravose ricadute sulle collezioni e in modo dichiarativo

283
00:21:22,850 --> 00:21:27,610
che ci aiuta a capire come questo tipo di codice più pulito.

284
00:21:27,610 --> 00:21:31,480
E come ho detto prima, può anche essere facilmente parallelizzabile.

285
00:21:31,620 --> 00:21:33,090
E così è tutto.

286
00:21:33,200 --> 00:21:39,700
E puoi anche dare un'occhiata a questo libro chiamato l'8 luglio in azione, è un ottimo libro scritto da

287
00:21:39,930 --> 00:21:41,180
mia madre Mario.

288
00:21:41,230 --> 00:21:45,870
Vai avanti allora, Mike Crocker, così puoi anche leggere quel libro.

289
00:21:45,930 --> 00:21:52,390
Descrive così la celebrazione della filosofia dietro molte di queste caratteristiche dell'8 luglio in un modo molto carino.

290
00:21:52,430 --> 00:21:55,520
Questa è la cosa che mi piace del libro, quindi è un libro molto buono.

291
00:21:55,580 --> 00:21:59,370
Quando è possibile, puoi comprarlo se vuoi.

292
00:21:59,400 --> 00:22:02,970
Adesso fammi anche solo tirare velocemente il flusso.

293
00:22:02,990 --> 00:22:03,990
Quindi questo è al vapore.

294
00:22:04,060 --> 00:22:10,070
È l'8 luglio ma puoi anche usare il 9 luglio e questa è l'interfaccia del flusso e questo è un pacchetto

295
00:22:10,410 --> 00:22:11,250
di gelato.

296
00:22:11,270 --> 00:22:15,020
Quindi questa è essenzialmente l'API del flusso e qui ci sono alcune interfacce.

297
00:22:15,020 --> 00:22:16,820
E questa è l'interfaccia del flusso.

298
00:22:16,820 --> 00:22:20,260
Quindi questo è quello che abbiamo qui.

299
00:22:24,350 --> 00:22:25,800
Quindi questi sono i diversi metodi.

300
00:22:25,820 --> 00:22:34,250
Quindi abbiamo già esaminato il filtro del metodo che sta prendendo un predicato.

301
00:22:34,280 --> 00:22:41,160
Poi guardiamo anche al metodo di mappatura e possiamo anche guardare ad altri metodi, ma questo è il metodo della mappa

302
00:22:41,160 --> 00:22:42,590
che prende la funzione.

303
00:22:42,950 --> 00:22:43,600
OK.

304
00:22:45,160 --> 00:22:46,730
Ed è che tutti i diversi metodi.

305
00:22:46,730 --> 00:22:48,730
E dobbiamo anche aumentare.

306
00:22:50,750 --> 00:22:53,920
Esistono anche altri metodi come l'uso dei record su Starcade.

307
00:22:54,170 --> 00:22:56,080
Quindi questi sono tutti alcuni metodi.

308
00:22:56,090 --> 00:22:57,650
In questa particolare interfaccia Ora

309
00:23:02,640 --> 00:23:04,980
una cosa è una volta che si esegue

310
00:23:08,760 --> 00:23:14,790
questa operazione in modo che non possiamo eseguire l'operazione del terminale ancora una volta in modo che il flusso sia stato chiuso.

311
00:23:14,850 --> 00:23:15,180
OK.

312
00:23:15,180 --> 00:23:18,520
E non possiamo eseguire l'operazione dominante per la seconda volta.

313
00:23:18,540 --> 00:23:20,700
Dovremmo ricostruire nuovamente il flusso.

314
00:23:20,700 --> 00:23:23,910
Quindi a causa di questo stiamo ottenendo questa eccezione di stato illegale.

315
00:23:23,910 --> 00:23:25,020
Quindi questo è tutto.

316
00:23:25,020 --> 00:23:30,740
Questa è una buona introduzione ai flussi e esploreremo ulteriormente le immagini successive.

317
00:23:30,750 --> 00:23:32,400
Ma questo è ciò che speriamo per ora.

318
00:23:32,640 --> 00:23:34,940
Quindi spero che ti sia piaciuto leggerlo a riguardo.

319
00:23:35,230 --> 00:23:36,300
E grazie.

320
00:23:36,340 --> 00:23:40,020
E felice citazione e discordia saranno disponibili nella sezione risorse.

321
00:23:40,260 --> 00:23:40,590
Grazie.
