JavaRush /Блоги Java /Random-TG /Ламбдаҳо ва ҷараёнҳо, танҳо амалия, назария нест

Ламбдаҳо ва ҷараёнҳо, танҳо амалия, назария нест

Дар гурӯҳ нашр шудааст
Салом ба ҳама. Ба муносибати озмун ман тасмим гирифтам, ки дар ин ҷо мақола не, балки дарси кӯтоҳе нависам. Он дар бораи ламбдаҳо ва ҷараёнҳо дар Java хоҳад буд. Агар шумо аллакай шинос бошед ва онҳоро истифода баред, пас рост ба охири мақола гузаред, интихоби хурди вазифаҳо бо JavaRush мавҷуд аст, ки шумо метавонед дар он амал кунед. Ба шумо java 8 ва навтар лозим аст, омӯзиш аз JR, каме тафсилот ва бисёр чизҳои нофаҳмо хоҳад буд, хоҳиши қавӣ барои фаҳмидани он. Биёед аз он оғоз кунем, ки ман таърихи пайдоиши ламбдаҳо ва ҷараёнҳоро шарҳ намедиҳам, ман инро худам намедонам. Ман танҳо медонам, ки онҳо аз услуби функсионалии барномасозӣ, ба услуби OOP мо омадаанд. Дар таҷрибаи кӯтоҳи омӯзишии худ ман танҳо нишон додам, ки чӣ гуна ва чӣ гуна, баъзеҳо фаҳмидани идеяро душвор меҳисобанд, пас танҳо дар хотир доред, ки чӣ гуна навиштан лозим аст, шумо баъдтар мефаҳмед.

Ламбдаҳо

Ламбдаҳо ва ҷараёнҳо, танҳо амалия, назария нест - 1Ламбдаҳо ва ҷараёнҳо, танҳо амалия, назария нест - 2Агар шумо умуман намедонед, ки ламбдаҳо чистанд, пас: Ламбда чунин менамояд:
(a, b) -> a.compareTo(b)
(переменные) -> действие
Ҳоло ҳамин кифоя аст. Шумо метавонед назарияро дар ин ҷо хонед: пайванди як , пайванди дуюм , аммо ман фикр мекунам, ки амалия хеле шавқовартар аст. Ман тавсия медиҳам, ки мушкилоти зеринро ҳал кунед: Бо истифода аз усули 1 ҳисобкунак нависед. Ин усул бояд 2 арзиши рақамӣ ва чизи дигарро қабул кунад. Рамзи шумо чунин хоҳад буд:
class Lambda{
    public static void main (String[] args) {
	}

    public static double calculate(){
       	return null;
    }
}
Шумо бояд 3 параметрро дар имзои метод ворид кунед calculate, 1 фармонро илова кунед returnва ин усулро дар main. Ин усул бояд чӣ кор кунад?
  • қат кардан;
  • зиёд кардан;
  • тақсим кардан;
  • кам кардан;
  • решаро ҳисоб кардан;
  • ба қудрат баланд кардан;
  • ҷамъи далелҳоро ба рақами якум + 117 тақсим кунед;
  • ва ҳама гуна амалиёти дигаре, ки шумо метавонед дар бораи он фикр кунед.
Чизеро истифода набаред:
  • if-else;
  • charҳамчун нишондиҳандаи амалиёт;
  • switch-case;
  • ва ҳама чизи дигаре, ки ба фикри шумо меояд.
Чӣ шумо метавонед истифода баред:
  • Факат лямбдахо, вазифа ба зиммаи онхост.
- Чӣ? Ва ҳамааш? - Бале, ҳамааш ҳамин аст, зеро ба шумо аслан 3 сатр илова кардан лозим аст, агар ман ақаллан як сатрро пешниҳод кунам, боқимондаҳо ба таври худкор навишта мешаванд. Ва агар хоҳед, шумо метавонед мисолҳои гуглро ҷустуҷӯ кунед ва кӯшиш кунед, ки бифаҳмед. Албатта худатро месанҷӣ ва агар фиреб диҳӣ, касе намедонад, пас чаро? Хамаи 1,5 нафар шогирдони ман чунин як масъалаи оддиро хал карда, дар бораи чи будани ламбдахо ва чй тавр истифода бурдани онхо фахми-да гирифтанд. Ин барои ҷараён хеле зарур хоҳад буд. Агар шумо хоҳед, ки дар бораи натиҷа фахр кунед ва фаҳмед, ки оё шумо онро дуруст кардаед, codeро дар паёми хусусӣ фиристед. Эҳтиёҷ ба шарҳ нест, шумо метавонед дар он ҷо маслиҳатҳои ҷолибро илова кунед (аммо ба тавре ки вазифа хеле осон нашавад). Боз, ин мисолро ҳал карда, шумо бояд дар бораи чӣ гуна истифода бурдани ламбдаҳо аллакай фаҳмиши дағалона дошта бошед.
Ламбдаҳо ва ҷараёнҳо, танҳо амалия, назария нест - 3
Акнун биёед ба ҷараёнҳои java гузарем. Ин ҷараёнҳое нестанд, ки шумо, хонанда, шояд дар бораи он фикр кардаед. Не ин нест inputStreamва нест OutputStream. Он дигар аст, ҷолибтар аст. Ҷараёнҳо давраҳоро иваз карданд, на пурра, аммо ба ҳар ҳол. Ба онхо шиори «чй тавр карданро фахмон-да надихед, чй бояд кард» хизмат мекунанд. Намунаи хурди ҷараён:
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);
Дар ин ҷо чӣ гап? Биёед шарҳҳоро илова кунем:
myList.stream() // получить поток
    .filter(s -> s.startsWith("c")) //отфильтровать значения, оставить те, что начинаются с «с»
    .map(String::toUpperCase)  // преобразовать все значения, перевести в верхний регистр
    .sorted() // отсортировать по порядку (дефолтный порядо)
    .forEach(System.out::println); // вывести каждый элемент на экран
Бо ҳалқаи муқаррарӣ муқоиса кунед:
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);
}
Вақте ки шумо codeро мехонед, ҳама чиз даҳшатнок менамояд, аммо оё бо шарҳҳо осонтар аст? Ин муқаррарӣ аст, ман ҳам онҳоро муддати тӯлонӣ нафаҳмидам. Калиди фаҳмиш амалия аст. Аз ин рӯ, мо ба хондани мақолаҳои тарафи сеюм шурӯъ мекунем ва ба саволҳои худ ҷавоб меҷӯем, шумо метавонед онҳоро дар ин ҷо дар шарҳҳо пурсед, ман ҷавоби пурра намедиҳам, аммо ман ба самт ишора мекунам. Рӯйхати вазифаҳо аз JavaRush, ки ба назари ман барои машқ кардани ҷараён бузург аст:
  • 2208 - метавонад бо 1 ҷараён ва 1 бозгашт ҳал карда шавад, яъне. бадани усули бо оғоз хоҳад кард returnва он ҷо хоҳад буд 1 тамоми ҷараёни. Биёед талаботро рад кунем StringBuilder.

  • 1908 - шумо инчунин метавонед онро бо 1 ҷараён ва 1 бозгашт ҳал кунед. Аз хондани файл оғоз кунед. Ман намедонам, ки чӣ тавр ба файл тавассути ҷараёнҳо сабт кунам (агар ин имконпазир бошад), ҳоло мо онро дастӣ иҷро мекунем. Онхое. Мо танҳо 2 ҷараёнро мекушоем (консол ва навиштан ба файл). Мо файлро тавассути усулҳое мехонем, ки ба мо варақ ё ҷараёнро бармегардонанд (google ва javadoc).

  • 1907 - дар назария, онро дар як ҷараён низ ҳал кардан мумкин аст. Вуруд ба ҷараён номи файл, баромад шумораи калимаҳои ҷаҳон аст.

Ҳамааш ҳамин. Агар тавонам, ман як ҳикояи оддии дигар менависам. Ба андешаи ман, хондан дар бораи чизи олиҷаноб бидуни имкони санҷидани он ба гунае дилгиркунанда аст ё чизе. Ва пас аз ҳисобкунак ва 3 муаммо, ман фикр мекунам, ки шумо аллакай бо ламбдаҳо ва ҷараёнҳо хуб муомила карда истодаед, аз ин рӯ дар бораи ҳама имкониятҳо хонед, агар шумо ҳоло надошта бошед. UPD:
  • 1016 - ба таври каме таҳриф, шумо метавонед онро дар 1 ҷараён ва 1 бозгашт ҳал кунед;

  • 1821 - хеле осон ва дар 1 ҷараён ва 1 бозгашт.

    Ин 2 вазифа шуморо бо усули дигари ҷараён ва коллектори дигар шинос мекунад.

  • 1925 - шумо метавонед як сатр бо калимаҳоро дар як ҷараён гиред ва сипас онро ба файл нависед (ман намедонам, ки оё аз ҷараён ба файл навиштан мумкин аст)

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION