Ламбдаҳо
Агар шумо умуман намедонед, ки ламбдаҳо чистанд, пас: Ламбда чунин менамояд:(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
;- ва ҳама чизи дигаре, ки ба фикри шумо меояд.
- Факат лямбдахо, вазифа ба зиммаи онхост.
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 - дар назария, онро дар як ҷараён низ ҳал кардан мумкин аст. Вуруд ба ҷараён номи файл, баромад шумораи калимаҳои ҷаҳон аст.
-
1016 - ба таври каме таҳриф, шумо метавонед онро дар 1 ҷараён ва 1 бозгашт ҳал кунед;
-
1821 - хеле осон ва дар 1 ҷараён ва 1 бозгашт.
Ин 2 вазифа шуморо бо усули дигари ҷараён ва коллектори дигар шинос мекунад.
-
1925 - шумо метавонед як сатр бо калимаҳоро дар як ҷараён гиред ва сипас онро ба файл нависед (ман намедонам, ки оё аз ҷараён ба файл навиштан мумкин аст)
GO TO FULL VERSION