Lambdas
Yen sampeyan ora ngerti apa iku lambda, banjur: Lambda katon kaya iki:(a, b) -> a.compareTo(b)
(переменные) -> действие
Cukup kanggo saiki. Sampeyan bisa maca teori ing kene: link siji , link loro , nanging aku laku luwih nyenengake. Aku saranake sampeyan ngrampungake masalah ing ngisor iki: Tulis kalkulator nggunakake metode 1. Cara kasebut kudu nampa 2 nilai digital lan liya-liyane. Kode sampeyan bakal katon kaya iki:
class Lambda{
public static void main (String[] args) {
}
public static double calculate(){
return null;
}
}
Sampeyan kudu ngetik 3 paramèter ing teken cara calculate
, nambah 1 printah ing return
lan nyoba nelpon cara iki ing main
. Apa sing kudu ditindakake kanthi cara iki?
- melu;
- multiply;
- dibagi;
- nyuda;
- ngitung oyod;
- mundhakaken daya;
- mundhakaken menyang daya jumlah bantahan dibagi dening nomer pisanan + 117;
- lan kabeh operasi liyane sing bisa sampeyan pikirake.
if-else
;char
minangka indikator operasi;switch-case
;- lan kabeh sing ana ing pikiranmu.
- Mung lambdas, tugas wis ana.
inputStream
lan ora OutputStream
. Beda, luwih menarik. Aliran wis ngganti siklus, ora rampung, nanging isih. Dheweke diwenehi semboyan "ora nerangake carane nindakake, nerangake apa sing kudu ditindakake." Conto cilik saka stream:
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
Apa sing kedadeyan ing kene? Ayo nambah komentar:
myList.stream() // получить поток
.filter(s -> s.startsWith("c")) //отфильтровать значения, оставить те, что начинаются с «с»
.map(String::toUpperCase) // преобразовать все значения, перевести в верхний регистр
.sorted() // отсортировать по порядку (дефолтный порядо)
.forEach(System.out::println); // вывести каждый элемент на экран
Bandhingake karo loop biasa:
List<String> toSort = new ArrayList<>();
for(String s : myList){
if(s.startsWith("c")){
toSort.add(s.toUpperCase());
}
}
Collections.sort(toSort);
for(String s : toSort){
System.ouy.println(s);
}
Nalika maca kode, kabeh katon medeni, nanging luwih gampang karo komentar? Iki normal, aku uga ora ngerti dheweke suwe. Kunci kanggo mangerteni yaiku laku. Mulane, kita wiwiti maca artikel pihak katelu lan goleki jawaban kanggo pitakonan kita, sampeyan uga bisa takon kene ing komentar, aku ora bakal menehi jawaban lengkap, nanging aku bakal nuduhake arah. Dhaptar tugas saka JavaRush sing dakanggep apik kanggo latihan streaming:
-
2208 - bisa ditanggulangi karo 1 stream lan 1 bali, i.e. awak saka cara bakal miwiti karo
return
lan banjur bakal ana 1 kabèh stream. Ayo ngilangi syarat kasebutStringBuilder
. -
1908 - sampeyan uga bisa ngatasi karo 1 stream lan 1 bali. Miwiti karo maca file. Aku ora ngerti carane ngrekam menyang file liwat stream (yen iki bisa), kanggo saiki kita nindakaken kanthi manual. Sing. Kita mbukak mung 2 stream (konsol lan nulis menyang file). Kita maca file kasebut liwat metode sing bakal ngasilake sheet utawa stream (google lan javadoc).
-
1907 - ing teori, uga bisa ditanggulangi ing siji stream. Input kanggo stream yaiku jeneng file, output yaiku jumlah tembung donya.
-
1016 - kanthi cara sing rada keblinger, sampeyan bisa ngatasi ing 1 stream lan 1 bali;
-
1821 - gampang banget lan ing 1 stream lan 1 bali.
2 tugas iki bakal ngenalake sampeyan cara streaming liyane lan kolektor liyane.
-
1925 - sampeyan bisa njaluk baris karo tembung ing siji stream lan banjur nulis menyang file (Aku ora ngerti yen iku bisa kanggo nulis menyang file saka stream)
GO TO FULL VERSION