JavaRush /Blog Jawa /Random-JV /Lambdas lan lepen, mung laku, ora teori

Lambdas lan lepen, mung laku, ora teori

Diterbitake ing grup
Halo kabeh. Ing kesempatan kompetisi, aku mutusake kanggo nulis ora artikel ing kene, nanging pawulangan singkat. Babagan lambdas lan lepen ing Jawa. Yen sampeyan wis kenal lan nggunakake, banjur langsung menyang mburi artikel, bakal ana pilihan cilik tugas karo JavaRush sing bisa sampeyan praktik. Sampeyan butuh java 8 lan luwih dhuwur, latihan saka JR, bakal ana sawetara rincian lan akeh perkara sing ora bisa dingerteni, kepinginan sing kuat kanggo ngerteni. Ayo diwiwiti kanthi kasunyatan manawa aku ora bakal nerangake sejarah tampilan lambdas lan stream, aku mung ora ngerti. Aku mung ngerti sing padha teka saka gaya program fungsi, kanggo gaya OOP kita. Ing pengalaman sinau cekak, aku mung nuduhake kepiye carane lan apa, sawetara wong angel ngerti ide kasebut, mula mung ngelingi carane nulis, sampeyan bakal ngerti mengko.

Lambdas

Lambdas lan stream, mung praktik, ora ana teori - 1Lambdas lan stream, mung praktik, ora ana teori - 2Yen 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 returnlan 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.
Apa sing ora bisa digunakake:
  • if-else;
  • charminangka indikator operasi;
  • switch-case;
  • lan kabeh sing ana ing pikiranmu.
Apa sampeyan bisa nggunakake:
  • Mung lambdas, tugas wis ana.
- Apa? Lan iku kabeh? - Ya, iku kabeh, amarga sampeyan kudu nambah 3 baris, yen aku suggest paling siji, liyane bakal ditulis kanthi otomatis. Lan yen sampeyan pengin, sampeyan bisa google conto lan nyoba kanggo mangerteni. Mesthi, sampeyan bakal mriksa dhewe lan yen sampeyan ngapusi, ora ana sing ngerti, nanging kenapa? Sawise ngrampungake masalah sing prasaja, kabeh siswa 1,5 entuk pangerten babagan apa lambdas lan cara nggunakake. Iki bakal dibutuhake banget kanggo streaming. Yen sampeyan pengin gumunggung babagan asil lan ngerteni yen sampeyan nindakake kanthi bener, kirim kode kasebut ing pesen pribadi. Ora perlu menehi komentar; sampeyan bisa nambah tips sing menarik ing kana (nanging supaya ora nggawe tugas kasebut gampang banget). Maneh, sawise ngrampungake conto iki, sampeyan kudu ngerti babagan cara nggunakake lambdas.
Lambdas lan stream, mung praktik, ora ana teori - 3
Saiki ayo pindhah menyang java stream. Iki dudu aliran sing sampeyan, sing maca, bisa uga mikir babagan. Ora, ora inputStreamlan 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 returnlan banjur bakal ana 1 kabèh stream. Ayo ngilangi syarat kasebut StringBuilder.

  • 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.

Mekaten. Yen aku bisa, aku bakal nulis crita prasaja liyane. Ing mratelakake panemume, maca bab kelangan tanpa kesempatan kanggo nyoba iku piye wae mboseni utawa soko. Lan sawise kalkulator lan 3 teka-teki, Aku sampeyan wis njaluk bebarengan uga karo lambdas lan lepen, supaya maca babagan kabeh kemungkinan yen sampeyan durung. UPD:
  • 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)

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION