Lambdas
Lambdalaryň nämedigini bilmeýän bolsaňyz, onda: Lambda şeýle görünýär:(a, b) -> a.compareTo(b)
(переменные) -> действие
Häzirlikçe ýeterlik. Teoriýany şu ýerden okap bilersiňiz: birini baglanyşdyryň , ikisini baglanyşdyryň , ýöne meniň pikirimçe tejribe has gyzykly. Aşakdaky meseläni çözmegiňizi maslahat berýärin: 1-nji usuly ulanyp kalkulýator ýazyň. Usul 2 sanly bahany we başga bir zady kabul etmeli. Koduňyz şuňa meňzeş bir zat görüner:
class Lambda{
public static void main (String[] args) {
}
public static double calculate(){
return null;
}
}
Usul goluna 3 parametr girizmeli calculate
, 1 buýruk goşmaly return
we bu usuly çagyrmagy synap görmeli main
. Bu usul näme edip biler?
- eplemek;
- köpeltmek;
- bölmek;
- aýyrmak;
- köküni hasaplamak;
- güýç ýokarlandyrmak;
- birinji san + 117 bilen bölünen argumentleriň jemini güýç bilen ýokarlandyrmak;
- we pikir edip biljek beýleki amallaryňyz.
if-else
;char
amal görkezijisi hökmünde;switch-case
;- we kelläňize gelýän beýleki zatlar.
- Diňe lambdalar, wezipe olaryň üstünde.
inputStream
we beýle däl OutputStream
. Bu başga, has gyzykly. Akymlar siklleri çalyşdy, düýbünden däl, ýöne şonda-da. Olara "muny nädip etmelidigini düşündirmeli däl, näme etmelidigini düşündirme" şygary bilen hyzmat edilýär. Akymyň kiçijik mysaly:
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);
Bu ýerde näme bolýar? Teswirler goşalyň:
myList.stream() // получить поток
.filter(s -> s.startsWith("c")) //отфильтровать значения, оставить те, что начинаются с «с»
.map(String::toUpperCase) // преобразовать все значения, перевести в верхний регистр
.sorted() // отсортировать по порядку (дефолтный порядо)
.forEach(System.out::println); // вывести каждый элемент на экран
Adaty aýlaw bilen deňeşdiriň:
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);
}
Kody okanyňyzda hemme zat gorkunç görünýär, ýöne teswirler bilen aňsatmy? Bu adaty zat, men olara köp wagt bäri düşünmedim. Düşünmegiň açary tejribe. Şonuň üçin üçünji tarap makalalaryny okap başlaýarys we soraglarymyza jogap gözläp başlaýarys, teswirlerde bu ýerden hem sorap bilersiňiz, men doly jogap bermerin, ýöne ugry görkezerin. JavaRush-dan gelýän meseleleriň sanawy, meniň pikirimçe, akym bilen meşgullanmak üçin ajaýyp:
-
2208 - 1 akym we 1 gaýdyp gelmek bilen çözülip bilner. usulyň bedeni başlar
return
we soň 1 akym bolar. Talaby goýalyňStringBuilder
. -
1908 - ony 1 akym we 1 gaýdyp bermek bilen hem çözüp bilersiňiz. Faýly okamakdan başlamak. Akymlar arkaly bir faýla nädip ýazga geçirmelidigini bilemok (bu mümkin bolsa), häzirlikçe el bilen edýäris. Bular. Diňe 2 akym açýarys (konsol we faýla ýazmak). Faýly bize bir sahypa ýa-da akym (google we javadoc) gaýtaryp berjek usullar arkaly okaýarys.
-
1907 - teoriýa boýunça bir akymda hem çözülip bilner. Akymyň girişi faýlyň ady, çykyş dünýä sözleriniň sanydyr.
-
1016 - birneme ýoýulan görnüşde, ony 1 akymda we 1 gaýdyp getirip bilersiňiz;
-
1821 - gaty aňsat we 1 akymda we 1 gaýdyp.
Bu 2 mesele sizi başga bir akym usuly we başga bir kollektor bilen tanyşdyrar.
-
1925 - bir akymda sözler bilen bir setir alyp, soňra bir faýla ýazyp bilersiňiz (akymdan bir faýla ýazmagyň mümkin däldigini bilemok)
GO TO FULL VERSION