ืืื ืืืืขื ืืืืืจ ืืื?
ืื ืืื ื ืืชืืื ืืืืช ืืืงืืืืจืืืช ืืืื, ืืชื ืขืืื ืืืฆืื ืืืืจ ืื ืืฉืขืื, ืคืืื, ืื ืืืจื ืืื ืื ืืืก ืืชื ืฉืื. ืืืงืจื ืื, ืื ืชืืกืก ืืขืืืจ ืืืืจืื ืืืจืื ืื, ืื ืืชื ืืงืื ืื ืืฉื, ืืืงืฉื ืืืฆืืข ืืฆืขืืช ืืืขืจืืช ืืืฆื ืืืื ืืฉืคืจ ืื ืืืฉืืื ืืช ืืืืืจ. ืืืืืจ ืืื ื ืืชืืืืจ ืืืืืช ืืขื ืขืจื ืืงืืื ืืืฉืื, โโืฉืื ืืืืจ ืขื ืืืืืฉ. ืืืืคื: ืื ืกื ืืชืืจ ืืืจืื ืืืจืืืื (ืขืืืจ ืื ืฉืื ืืกืืืืื) ืืฆืืจื ืคืฉืืื ืืื ืืืคืฉืจ. ืืงืฉื ืืืกืืืจ ืืช ื-API ืฉื Stream ืืขื ืืงื ืื ืืฉืจืื ืืืชืื ืืช ืื. ืืฉืืชื ืขื ืื ืืืืืืชื ืฉืืืง ืืืืืืืืช ืืืจื ืฉืื ืืืื ืืืชื ืืืื ืืช ืืื ืืื ื ืฉื ืืืืืื ืืืืื. ืื ื ืชืืื ืขื ืืืืืื ืืืืื. ืื ืืชื ืฆืจืื ืืืขืช ืืื ืืืืื ืืช ืืืืืจ ืืื?
ืืชื ืืืื ืืงืจืื ืขืื ืืืืจืื ืื ืฉื Oracle
ืืืืงืืืืช ืืืจืื. ืื ื ืงืจื " ืืงืืืช ืืขื ". ืืชื ืืืื ืืชืช ืฉื ืืืฉืชื ืื ืืื ืฉืืชื ืจืืฆื - ืืชื ืื ืฆืจืื ืืืฉืชืืฉ ืืืืชื ืฉืืืช ืฉืฆืืื ื ืืืืฉืง. ืื ืืื ืคืจืืืจืื, ืคืฉืื ืฆืืื ืกืืืจืืื ืจืืงืื. ืื ืืฉ ืจืง ืคืจืืืจ ืืื, ืคืฉืื ืฆืืื ืืช ืฉื ืืืฉืชื ื ืืื ืกืืืจืืื. ืืขืช, ืืืืจ ืฉืืื ื ืืช ืืคืจืืืจืื, ืืืืข ืืืื ืืืื ืืืืฃ ืืืืื ืืืืืื. ืืชืื ืืคืืื ืืืชืืืชืืช, ืืชื ืืืชื ืงืื ืืืืืง ืืคื ืฉืืชื ืืืชื ืืฉืืื ืจืืืื. ืื ืืงืื ืฉืื ืืืจืื ืืฉืืจื ืืืช, ืื ืืชื ืืืื ืืืฉืืื ืืช ืืกืืืจืื ืืืชืืืชืืื ืืืืืืื (ืืืืื ืืืฆืืจืืช ืื ืืืืืืืืช ืขืืืจ). ืื ืืืืืื ืืฉืืจื ืืืืืืช ืฉืื ืืืืืจื ืืฉืื, ืืื ื ืืืืืช ืืืืื ืืฆืืจื
- ืื ืืืืขื ืืื ืฉืื ืฉืืืฉืืื ืฉืื ืืืจ ืืืืจืื ืืืื ืืช Java Core, ืืื ืืื ืืื ืืืฉื ืืืื ืืืืืื ืืืืื ืื'ืืืื. ืื ืฉืืืื ืฉืืขื ืืฉืื ืขื ืืืืืื ืืืืื, ืืื ืืคืจืืื ืืกืจืื
- ืื ืืืืขื ืืื ืฉืื ืฉืืฉ ืืื ืืื ื ืืกืืืืช ืฉื ืืืืืื ืืืืื, ืืื ืขืืืื ื ืจืชืขืื ืืื ืืื ืจืืืืื ืืืฉืชืืฉ ืืื.
![ืืกืืจ ืขื ืืืืืื ืืืืื ืื'ืืืื. ืขื ืืืืืืืช ืืืฉืืืืช. ืืืง 1 - 1](https://cdn.codegym.cc/images/article/7c4222bd-fcde-4993-a190-a7ab1836b4d3/800.jpeg)
-
ืขืืื ืืืืื ืชืื ืืช ืืื ืื ืขืฆืืื (OOP), ืืืืืจ:
- ืืืืงืืช, ืืืืืืงืืื ืืืืืื ืืื ืืื;
- ืืืฉืงืื, ืืืฆื ืื ืฉืื ืื ืืืืืงืืช, ืืืงืฉืจ ืืื ืืืฉืงืื ืืืืืงืืช;
- ืฉืืืืช, ืืืฆื ืืงืจืื ืืื, ืฉืืืืช ืืืคืฉืืืช (ืืืืืจ ืฉืืืืช ืืื ืืืืืฉ), ืคืจืืืจื ืืชืืื, ืืจืืืื ืืื ืฉื ืืชืืื ืืืืฆื ืืืขืืืจ ืืืชื;
- ืืฉื ื ืืืฉื, ืฉืืืืช/ืืฉืชื ืื ืกืืืืื, ืฉืืืืช/ืืฉืชื ืื ืกืืคืืื;
- ืืจืืฉื ืฉื ืืืืงืืช ืืืืฉืงืื, ืืจืืฉื ืืจืืื ืฉื ืืืฉืงืื.
- ืืืข ื-Java Core: ืกืืืื ืื ืจืืื (ืื ืจืืื), ืืืกืคืื (ืจืฉืืืืช), ืฉืจืฉืืจืื.
ืงืฆืช ืืืกืืืจืื
ืืืืืื ืืืื ืืืืขื ืื'ืืืื ืืืชืื ืืช ืืคืื ืงืฆืืื ืื, ืืืฉื ืืืืชืืืืงื. ืืืจืฆืืช ืืืจืืช ืืืืฆืข ืืืื ื-20, ืขืื ืืืื ืื ืฆ'ืจืฅ', ืฉืืื ืืืื ืืืื ืืชืืืืงื ืืื ืืื ื ืืคืฉืืืช, ืืืื ืืืจืกืืืช ืคืจืื ืกืืื. ืืืื ืื ืฆ'ืจืฅ' ืืื ืื ืฉืืืฆืื ืืช ืืฉืืื ืืืืืื, ืฉืืื ืืชืืืื ืืืกืฃ ืฉื ืจืขืืื ืืช ืืืคืฉืืื ืืืืืืื ืฉืืื ื ืงืฉืืจืื ืืชืื ืืช. ืืชืืืืงืืื ืืื ืืื ืืืืจืื ื ืื'ืื ืคืื ื ืืืื ืขืืื ืืืืชื ืืื ืืืื ืืืจืกืืืช ืคืจืื ืกืืื. ืืื ืืชืืื: ืฆ'ืจืฅ' ืืืฆืื ืืช ืืฉืืื ืืืืืื. ืืืืจืื ื ืคืืชื ืืช ืืืื ืช ืืืืฉืื ืืืืคืฉืืช ืฉืื, ืืืืื ื ืืืื "ืืืื ืช ืืืืจืื ื". ืืคืื ื ืืืื ืืฆืืข ืืจืืืืงืืืจืช ืืืฉืืื ืฉืืืืื ืืช ืืืกืืก ืืืืฉืืื ืืืืจื ืืื (ืฉื ืงืจืืื ืืืื "ืืจืืืืงืืืจืช ืคืื ื ืืืื"). ืืืืชื ืชืงืืคื, ืจืขืืื ืืชืื ืฉื ืืืื ืื ืฆ'ืจืฅ' ืื ืืคืื ืืืืขืื ืื ืื ืืื ืืฆืืจืืชืืื ืฉื ืขืืืชืื (ืืืขื ืชืืื ืืืชืืืืงื ืืืืืจื). ืขื ืืืช, ืงืฆืช ืืืืืจ ืืืชืจ ื'ืื ืืงืืจืชื (ืื ืืืืจ ืืื ืืืจืกืืืช ืคืจืื ืกืืื, ืืืืื ืืกืืคืืจ ืฉืื ื, ืขืืื ืฉื ืืืืื ืืืื ืืืืื ืฉื ืืกืฆ'ืืกืืก) ืืื ืืืชืขื ืืื ืืจืขืืื ืืชืื ืฉื ืฆ'ืจืฅ'. ืืฉื ืช 1958, ืืื ืืฆืจ ืืช ืฉืคืช ืืชืื ืืช ืืคืื ืงืฆืืื ืืืช ืืจืืฉืื ื, LISP, ืืืืืกืกืช ืขื ืืจืขืืื ืืช ืืืื. ื-58 ืฉื ืื ืืืืืจ ืืืชืจ, ืืจืขืืื ืืช ืฉื ืชืื ืืช ืคืื ืงืฆืืื ืื ืืืคื ืืชืื Java 8. ืืคืืื 70 ืฉื ื ืื ืขืืจื... ืืื ืืช, ืื ืื ืืืจืื ืืืืชืจ ืฉืืงื ืืจืขืืื ืืชืืื ืืืืืช ืืืืฉื ืืคืืขื.ืื ืืขื ืืื
ืืืืื ืืืืื ืืื ืกืื ืฉื ืคืื ืงืฆืื. ืืชื ืืืื ืืืชืืืืก ืืื ืืฉืืืช Java ืจืืืื, ืืื ืขื ืืืืืืช ืืืืืืืืช ืืขืืืจ ืืฉืืืืช ืืืจืืช ืืืืขืื. ืื ื ืืื. ืื ืืคื ืืืืืช ืืคืฉืจื ืืืขืืืจ ืื ืจืง ืืกืคืจืื, ืืืจืืืืช ืืืชืืืื ืืฉืืืืช, ืืื ืื ืฉืืืืช ืืืจืืช! ืืชื ืืืื ื ืฆืืจื ืืช ืื? ืื ืืขืืืจ, ืืืฉื, ืื ื ืจืฆื ืืืขืืืจ ืฉืืืช ืืชืงืฉืจืืช ืืืืจืช ืืืฉืื. ืืืืืจ, ืื ืื ืื ื ืฆืจืืืื ืฉืืฉืืื ืฉืื ื ืงืืจืืื ืื ืฉืชืืื ืื ื ืืืืืืช ืืงืจืื ืืฉืืื ืืืจืช ืฉืื ื ืืขืืืจืื ืืืื. ืืืืืื ืืืจืืช, ืื ืืฉ ืื ื ืืช ืืืืืืช ืืืขืืืจ ืืชืงืฉืจืืช ืืืืจืช ืืืช ืื ืกืืืืช ืืกืืืืืช ืืืชืงืฉืจืืช ืืืืจืช ืืืจืช ืืืืจืืช. ืืืื ืฉืืฉืืื ืฉืื ื ืฉืืงืืืช ืืช ืืืชืงืฉืจืืช ืฉืื ื ืงืืจืืช ืืื. ืืืื ืืื ืืืืื ืคืฉืืื. ื ื ืื ืฉืื ืื ื ืืืชืืื ืืืื ืืืืืจืืชื ืืืื ืืื ืฉื ืจืื ืื:public void mySuperSort() {
// We do something here
if(compare(obj1, obj2) > 0)
// And then we do something here
}
ืืืฆืืจื if
, ืื ื ืงืืจืืื ืืฉืืื compare()
, ืืขืืจืช ืฉื ื ืืืืืืงืืื ืฉืืฉ ืืืฉืืืช, ืืื ื ืจืืฆืื ืืืขืช ืืืื ืืืืืืืืงืืื ืืืื ืืื "ืืืื ืืืชืจ". ืื ื ืื ืืืื ืฉื"ืืืื" ืื ืืคื ื ื"ืคืืืช". ืฉืืชื "ืืืื" ืืืจืืืืช, ืื ืื ืื ื ืืืชืืื ืฉืืื ืืื ืืืจืกืืืช ืฉืชืืข ืืืืื ืื ืจืง ืืกืืจ ืขืืื, ืืื ืื ืืกืืจ ืืืจื (ืืืงืจื ืืื, ืืขืฆื "ืืืืื" ืืืื ืืขืฆื ืืืคืฅ "ืืคืืืช" , ืืืืืคื). ืืื ืืืืืืจ ืืช ืืืืืืจืืชื ืืกืคืฆืืคื ืืืืื ืฉืื ื, ืื ืื ื ืฆืจืืืื ืื ืื ืื ืืืฉืื ืฉืืขืืืจ ืืืชื ืืฉืืื ืฉืื ื mySuperSort()
. ืื ื ืืื "ืืฉืืื" ืืฉืืื ืฉืื ื ืืืฉืจ ืืื ื ืงืจืืช. ืืืืื, ื ืืื ืืืชืื ืฉืชื ืฉืืืืช ื ืคืจืืืช - mySuperSortAscend()
ืืื mySuperSortDescend()
- ืืืืื ืืกืืจ ืขืืื ืืืืจื. ืื ืฉื ืืื ืืืขืืืจ ืืจืืืื ื ืืืฉืื ืืืชืืื (ืืืืืื, ืืฉืชื ื ืืืืืื ื; ืื ื ืืื, ืื ืืืื ืืกืืจ ืขืืื, ืืื ืื ื ืืื, ืื ืืกืืจ ืืืจื). ืืื ืื ืื ื ืจืฆื ืืืืื ืืฉืื ืืกืืื ืืื ืจืฉืืื ืฉื ืืขืจืื ืืืจืืืืช? ืืื ืืฉืืื ืฉืื ื mySuperSort()
ืชืืข ืืืืื ืืช ืืขืจืื ืืืืจืืืืช ืืืื? ืืคื ืืืื? ืืคื ืืืืจื ืืืฆืืืจ ืฉื ืื ืืืืืื? ืืืื ืืคื ืืืืคืืืชื ืขื ืืืืจืืืช ืืจืืฉืื ื ืืืขืจื? ืืื ืื ื ืฆืืจื ืืืืื ืืช ืจืฉืืืช ืืืขืจืืื ืืคื ืืืื ืืืขืจื ืืืงืจืื ืืกืืืืื, ืืืคื ืืืืจื ืืืฆืืืจ ืฉื ืื ืืืืืื ืืื ืืขืจื ืืืงืจืื ืืืจืื? ืื ื ืืฆืคื ืฉืืืจ ืฉืืขืชื ืขื ืืฉืืืืืช ืืฉืืืงืจื ืืื ืคืฉืื ื ืขืืืจ ืืฉืืืช ืืืืื ืฉืื ื ืืืืืืงื ืืฉืืืื ืฉืืชืืจ ืืช ืืืืืจืืชื ืืืืื ืืจืฆืื. ืืืืืื ืฉืืฉืืื ืืกืื ืืจืืืช sort()
ืืืืฉืืช ืขื ืืกืืก ืืืชื ืขืืงืจืื ืืื mySuperSort()
, ืืฉืชืืฉ sort()
ืืืืืืืืช ืฉืื.
String[] array1 = {"Dota", "GTA5", "Halo"};
String[] array2 = {"I", "really", "love", "Java"};
String[] array3 = {"if", "then", "else"};
List<String[]> arrays = new ArrayList<>();
arrays.add(array1);
arrays.add(array2);
arrays.add(array3);
Comparator<;String[]> sortByLength = new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1.length - o2.length;
}
};
Comparator<String[]> sortByCumulativeWordLength = new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
int length1 = 0;
int length2 = 0;
for (String s : o1) {
length1 += s.length();
}
for (String s : o2) {
length2 += s.length();
}
return length1 - length2;
}
};
arrays.sort(sortByLength);
ืชืึนืฆึธืึธื:
- Dota GTA5 Halo
- if then else
- I really love Java
ืืื ืืืขืจืืื ืืืืื ืื ืืคื ืืกืคืจ ืืืืืื ืืื ืืขืจื. ืืขืจื ืขื ืคืืืช ืืืืื ื ืืฉื ื"ืคืืืช". ืืื ืื ืื ืงืืื. ืืขืจื ืขื ืืืชืจ ืืืืื ื ืืฉื ื"ืืืื ืืืชืจ" ืืืืืงื ืืกืืคื. ืื ื ืขืืืจ ืืืจื ืืฉืืืื ืฉืื ื ืืฉืืื sort()
, ืืืื sortByCumulativeWordLength
, ืื ื ืงืื ืชืืฆืื ืฉืื ื:
- if then else
- Dota GTA5 Halo
- I really love Java
ืืขืช ืืขืจืื ื-are ืืืืื ืื ืืคื ืืืกืคืจ ืืืืื ืฉื ืืืืชืืืช ืืืืืื ืฉื ืืืขืจื. ืืืขืจื ืืจืืฉืื, ืืฉ 10 ืืืชืืืช, ืืฉื ื - 12, ืืืฉืืืฉื - 15. ืื ืืฉ ืื ื ืจืง ืืฉืืื ืืืื, ืื ืื ืื ื ืื ืฆืจืืืื ืืืืจืื ืขื ืืฉืชื ื ื ืคืจื ืขืืืจื. ืืืงืื ืืืช, ืื ืื ื ืืืืืื ืคืฉืื ืืืฆืืจ ืืืืงื ืื ืื ืืืืช ืืืฉ ืืืื ืืงืจืืื ืืฉืืื sort()
. ืืฉืื ืืื:
String[] array1 = {"Dota", "GTA5", "Halo"};
String[] array2 = {"I", "really", "love", "Java"};
String[] array3 = {"if", "then", "else"};
List<String[]> arrays = new ArrayList<>();
arrays.add(array1);
arrays.add(array2);
arrays.add(array3);
arrays.sort(new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1.length - o2.length;
}
});
ื ืงืื ืืช ืืืชื ืชืืฆืื ืืื ืืืงืจื ืืจืืฉืื. โฏ ืืฉืืื 1. ืฉืืชืื ืืช ืืืืืื ืืื ืื ืฉืชืืืื ืืขืจืืื ืื ืืกืืจ ืขืืื ืฉื ืืกืคืจ ืืืืืื ืืื ืืขืจื, ืืื ืืกืืจ ืืืจื. ืื ืื ื ืืืจ ืืืืขืื ืืช ืื ืื. ืื ืื ื ืืืืขืื ืืืขืืืจ ืืคืฆืื ืืฉืืืืช. ืืืชืื ืืื ืฉืื ืื ื ืฆืจืืืื ืืจืืข, ืื ืื ื ืืืืืื ืืืขืืืจ ืืืืืืงืืื ืฉืื ืื ืืฉืืื, ืืฉืจ ืชืคืขืื ืืช ืืฉืืื ืฉืืืฉืื ื. ืื ืืขืื ืืช ืืฉืืื: ืืื ืืืื ืฆืจืื ืืื ืืืืื ืืืืื?โฏ ืื ืืืืื ืืืืื ืืื ืืืืืืงื ืฉืืฉ ืื ืืืืืง ืฉืืื ืืืช. ืืื "ืืืืืืงื ืฉืืื". ืฉืืื ืืจืืื ืืืืืืืงื. ืคืฉืื ืืฉ ืื ืชืืืืจ ืืขื ืื ืืืืจ (ืืื ืขืื ืขื ืื ืืืืฉื). ืืืื ื ืกืชืื ืฉืื ืขื ืืงืื ืืื:
arrays.sort(new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1.length - o2.length;
}
});
ืืื ืื ืื ื ืืืงืืื ืืช ืจืฉืืืช ืืืขืจืืื ืฉืื ื ืืงืืจืืื ืืืชืืื ืฉืื sort()
, ืืืื ืื ืื ื ืืขืืืจืื ืืืืืืงื ืืฉืืืื ืืฉืืื ืืืืืช compare()
(ืืฉื ืฉืื ืื ืืฉื ื ืื ื - ืืืจื ืืื, ืื ืืฉืืื ืืืืืื ืฉื ืืืืืืืงื ืืื, ืื ืื ืื ื ืื ืืืืืื ืืืขืืช). ืืฉืืื ืื ืืฉ ืฉื ื ืคืจืืืจืื ืฉืืืชื ื ืขืืื. ืื ืืชื ืขืืื ื- IntelliJ IDEA, ืืื ืจืืืช ืฉืืื ืืฆืืข ืืจืื ืืช ืืงืื ืืืืคื ืืฉืืขืืชื ืืืืคื ืืื:
arrays.sort((o1, o2) -> o1.length - o2.length);
ืื ืืคืืืช ืฉืืฉื ืฉืืจืืช ืืืื ืงืฆืจ. 6 ืฉืืจืืช ื ืืชืืืช ืืืืฉ ืืืืช ืงืฆืจื. ืืฉืื ื ืขืื, ืืื ืื ื ืืืืื ืฉืื ืื ืืื ืืฉืื ืืฉืื. ืืงืื ืืื ืืขืืื ืืืืืง ืืื ืฉืืื ืืขืืื ืขื ืืืืงื ืื ืื ืืืืช. ืืฉืืื 2. ืืฉืื ืขื ืฉืืชืื ืืคืชืจืื ืืืฉืืื 1 ืืืืฆืขืืช ืืืืื ืืืืื (ืืคืืืช, ืืงืฉ ื-IntelliJ IDEA ืืืืืจ ืืช ืืืืชื ืืื ืื ืืืืช ืฉืื ืืืืืื ืืืืื).
ืืืื ื ืืืจ ืขื ืืืฉืงืื
ืืืืคื ืขืงืจืื ื, ืืืฉืง ืืื ืคืฉืื ืจืฉืืื ืฉื ืฉืืืืช ืืืคืฉืืืช. ืืืฉืจ ืื ื ืืืฆืจืื ืืืืงื ืฉืืืืฉืืช ืืืฉืง ืืืฉืื, โโืืืืืงื ืฉืื ื ืืืืืช ืืืืฉื ืืช ืืืชืืืืช ืืืืืืืช ืืืืฉืง (ืื ืฉืขืืื ื ืืืคืื ืืช ืืืืืงื ืืืืคืฉืืช). ืืฉ ืืืฉืงืื ืขื ืืืื ืฉืืืืช ืฉืื ืืช (ืืืืืื,โฏList
), ืืืฉ ืืืฉืงืื ืขื ืฉืืื ืืืช ืืืื (ืืืืืื, Comparator
ืื Runnable
). ืืฉื ื ืืืฉืงืื ืฉืืื ืืื ืฉืืื ืืืช (ืื ืฉื ืงืจื ืืืฉืงื ืกืื ืืืื Serializable
). ืืืฉืงืื ืฉืืฉ ืืื ืจืง ืฉืืื ืืืช ื ืงืจืืื ืื ืืืฉืงืื ืคืื ืงืฆืืื ืืืื . ื-Java 8, ืื ืืคืืื ืืกืืื ืื ืืืขืจื ืืืืืืช: @FunctionalInterface
. ืืืฉืงืื ืืื ืฉื ืฉืืื ืืืช ืืชืืืืื ืืกืืื ืืขื ืืืืืืื ืืืืื. ืืคื ืฉืืืจืชื ืืืขืื, ืืืืื ืืืืื ืืื ืฉืืื ืขืืืคื ืืืืืืืงื. ืืืฉืื ืื ื ืขืืืจืื ืืืืืืงื ืืื, ืื ืื ื ืืขืฆื ืขืืืจืื ืืช ืืฉืืื ืืืืืืช ืืื. ืืกืชืืจ ืฉืื ืืืคืช ืื ื ืืื ืงืืจืืื ืืฉืืื. ืืืืจืื ืืืืืืื ืฉืืฉืืืื ืื ื ืื ืคืจืืืจื ืืฉืืื ืืืืืื ืืืฃ ืืฉืืื. ืืืืืชื, ืืืืื ืืืืื ืืื ืืืฉืื ืฉื ืืืฉืง ืคืื ืงืฆืืื ืื. ืืื ืืงืื ืื ืื ื ืจืืืื ืืืฉืง ืขื ืฉืืื ืืืช, ื ืืชื ืืฉืืชื ืืืืงื ืื ืื ืืืืช ืืืืืื. ืื ืืืืฉืง ืืฉ ืืืชืจ ืื ืคืืืช ืืฉืืื ืืืช, ืื ืืืืื ืืืืื ืื ืืขืืื ืืืืงืื ืืืช ื ืฉืชืืฉ ืืืืืงื ืื ืื ืืืืช ืื ืืคืืื ืืืืคืข ืฉื ืืืืงื ืจืืืื. ืขืืฉืื ืืืืข ืืืื ืืืคืืจ ืงืฆืช ืืืืืืืช. :)
ืชืืืืจ
ืืชืืืืจ ืืืืื ืืื ืืขืจื ืื:(parameters) -> {method body}
ืืืืืจ, ืกืืืจืืื ืืืงืืคืื ืืช ืคืจืืืจื ืืฉืืื, "ืืฅ" (ืฉื ืืฆืจ ืขื ืืื ืืงืฃ ืืกืืื ืืืื ื-), ืืืืืจ ืืื ืืืฃ ืืฉืืื ืืกืืืจืื, ืืื ืชืืื. ืืคืจืืืจืื ืชืืืืื ืืืื ืฉืฆืืื ื ืืฉืืืช ืืืืฉืง. ืื ืกืืื ืืฉืชื ืื ืืืืืื ืืืืงืืข ืืืืคื ืื ืืฉืืขื ืขื ืืื ืืืืืจ (ืืืงืจื ืฉืื ื, ืืื ืืืืข ืฉืื ืื ื ืขืืืืื ืขื ืืขืจืื ืืืจืืืช, ืื List
ืืืืืืืงื ืฉืื ื ืืืงืื ืืืืฆืขืืช String[
]), ืื ืืชื ืื ืฆืจืื ืืฆืืื ืืช ืืกืืืื ืฉืืื.
ืื ืื ืืขืืจืคืืื, ืฆืืื ืืช ืืกืื. IDEA ืืฆืืข ืืืชื ืืืคืืจ ืื ืืื ืื ืฆืืจื. |
return
. ืืื ืื ืืชื ืืฉืชืืฉ ืืคืืื ืืชืืืชืืช, ืื ืืชื ืืืื ืืืืื ืืืคืืจืฉ return
ืืฆืืจื, ืืืืืง ืืคื ืฉืืืืช ืขืืฉื ืืฉืืื ืจืืืื.
ืืืืืืืช
ืืืืื 1.() -> {}
ืืืืืื ืืื ืคืฉืืื. ืืืื ืืกืจ ืืขื :), ืื ืื ืื ืขืืฉื ืืืื. ืืืืื 2.
() -> ""
ืขืื ืืืืื ืืขื ืืื ืช. ืื ืื ืืืงื ืืืื ืืืืืืจ ืืืจืืืช ืจืืงื ( return
ืืืฉืื, ืื ืื ืืืืชืจ). ืื ื ืืืชื ืืืืจ, ืืื ืขื return
:
() -> {
return "";
}
ืืืืื 3. "ืฉืืื, ืขืืื!" ืฉืืืืฉ ืืืืืื
() -> System.out.println("Hello, World!")
ืื ืื ืืืงื ืืืื ืืื ืืืืืจ ืืืื (ืื ืื ื ืื ืืืืืื ืืฉืื return
ืืคื ื ืืงืจืืื ืื System.out.println()
, ืื println()
ืกืื ืืืืืจื ืฉื ืืฉืืื ืืื void
). ืื ืคืฉืื ืืฆืื ืืช ืืืจืื. ืื ืืืืืืื ืืืืฉืื ืฉื Runnable
ืืืืฉืง. ืืืืืื ืืืื ืืืื ืืืชืจ:
public class Main {
public static void main(String[] args) {
new Thread(() -> System.out.println("Hello, World!")).start();
}
}
ืื ืืื:
public class Main {
public static void main(String[] args) {
Thread t = new Thread(() -> System.out.println("Hello, World!"));
t.start();
}
}
ืื ืฉื ืืื ืืคืืื ืืฉืืืจ ืืช ืืืืื ืืืืืื ืืืืืืืงื Runnable
ืืื ืืืขืืืจ ืืืชื ืืื ืื Thread
:
public class Main {
public static void main(String[] args) {
Runnable runnable = () -> System.out.println("Hello, World!");
Thread t = new Thread(runnable);
t.start();
}
}
ืืืื ื ืกืชืื ืืงืจืื ืขื ืืจืืข ืฉืื ืืืืื ืืืืื ื ืฉืืจ ืืืฉืชื ื. ืืืืฉืง Runnable
ืืืืจ ืื ื ืฉืืืืืืืงืืื ืฉืื ืืืืืช ืืืืืช public void run()
ืฉืืื. ืืคื ืืืืฉืง, run
ืืฉืืื ืื ืืืงืืช ืคืจืืืจืื. ืืืื ืื ืืืืืจ ืืืื, ืืืืืจ ืกืื ืืืืืจ ืฉืื ืืื void
. ืืืชืื ืืื, ืืงืื ืืื ืืืฆืจ ืืืืืืงื ืขื ืฉืืื ืฉืื ืืืงืืช ืื ืืืืืจื ืืืื. ืื ืืชืืื ืืืืคื ืืืฉืื ืืฉืืืช Runnable
ืืืืฉืง run()
. ืื ืืกืืื ืฉืืฆืืื ื ืืฉืื ืืช ืืืืื ืืืืืื ืืื ืืืฉืชื ื Runnable
.โฏ ืืืืื 4.
() -> 42
ืฉืื, ืื ืื ืฆืจืื ืืืื, ืืื ืื ืืืืืจ ืืช ืืืกืคืจ 42. ืืคืฉืจ ืืฉืื ืืืืื ืืืืื ืืื ืืืฉืชื ื Callable
, ืื ืืืืฉืง ืืื ืืฉ ืจืง ืฉืืื ืืืช ืฉื ืจืืืช ืืขืจื ืื:
V call(),
ืืืคืโฏ V
โฏืกืื ืืืืืจื (ืืืงืจื ืฉืื ื,โฏ int
). ืืืชืื ืืื, ืื ื ืืืืืื ืืฉืืืจ ืืืืื ืืืืื ืืืืคื ืืื:
Callable<Integer> c = () -> 42;
ืืืืื 5. ืืืืื ืืืืื ืืืืื ืืกืคืจ ืฉืืจืืช
() -> {
String[] helloWorld = {"Hello", "World!"};
System.out.println(helloWorld[0]);
System.out.println(helloWorld[1]);
}
ืฉืื, ืืื ืืืืื ืืืืื ืืื ืคืจืืืจืื ืืกืื void
ืืืืจื (ืื ืืื return
ืืฉืคื).โฏ ืืืืื 6
x -> x
ืืื ืื ืื ื ืืืงืืื x
ืืฉืชื ื ืืืืืืจืื ืืืชื. ืฉืื ืื ืฉืื ืืฉ ืจืง ืคืจืืืจ ืืื, ืื ืืชื ืืืื ืืืฉืืื ืืช ืืกืืืจืืื ืกืืืื. ืื ื ืืืชื ืืืจ, ืืื ืขื ืกืืืจืืื:
(x) -> x
ืืื ื ืืืืื ืขื ืืฆืืจืช ืืืืจื ืืคืืจืฉืช:
x -> {
return x;
}
ืื ืืื ืขื ืกืืืจืืื ืืืฆืืจืช ืืืืจื:
(x) -> {
return x;
}
ืื ืขื ืฆืืื ืืคืืจืฉ ืฉื ืืกืื (ืืื ืืกืืืจืืื):
(int x) -> x
ืืืืื 7
x -> ++x
ืื ืื ื ืืืงืืื x
ืืืืืืจืื ืืืชื, ืืื ืจืง ืืืืจ ืืืกืคืช 1. ืืชื ืืืื ืืฉืืชื ืืช ืืืืืื ืื:
x -> x + 1
ืืฉื ื ืืืงืจืื, ืื ื ืืฉืืืืื ืืช ืืกืืืจืืื ืืกืืื ืืืืฃ ืืคืจืืืจ ืืืฉืืื, ืืื ืขื ืืืฆืืจื return
, ืืืืืื ืฉืื ืืืคืฆืืื ืืืื. ืืจืกืืืช ืขื ืกืืืจืืื ืืืฆืืจืช ืืืืจื ื ืืชื ืืช ืืืืืื 6. ืืืืื 8
(x, y) -> x % y
ืื ืื ื ืืืงืืื x
ืืืืืืจืื y
ืืช ืฉืืจืืช ืืืืืงื ืฉื x
ื y
. ืืื ื ืืจืฉืื ืืกืืืจืืื ืกืืื ืืคืจืืืจืื. ืื ืืืคืฆืืื ืืืื ืจืง ืืืฉืจ ืืฉ ืจืง ืคืจืืืจ ืืื. ืื ื ืื ืขื ืฆืืื ืืคืืจืฉ ืฉื ืืกืืืื:
(double x, int y) -> x % y
ืืืืื 9
(Cat cat, String name, int age) -> {
cat.setName(name);
cat.setAge(age);
}
ืื ืื ื ืืืงืืื Cat
ืืคืฅ, String
ืฉื ืืืื ืืื ื. ืืฉืืื ืขืฆืื ืื ื ืืฉืชืืฉืื ืืฉื ืืืืื ืฉืขืืจื ืืื ืืืืืืจ ืืฉืชื ืื ืขื ืืืชืื. ืืืืืื ืฉืืืืืืืงื ืฉืื ื cat
ืืื ืกืื ืืชืืืืกืืช, ืืื ืืฉืชื ื ืืืืฅ ืืืืืื ืืืืืื (ืืื ืืงืื ืืช ืืฉื ืืืืื ืฉืขืืจ). ืื ื ืืจืกื ืงืฆืช ืืืชืจ ืืกืืืืช ืฉืืฉืชืืฉืช ืืืืืื ืืืื:
public class Main {
public static void main(String[] args) {
// Create a cat and display it to confirm that it is "empty"
Cat myCat = new Cat();
System.out.println(myCat);
// Create a lambda
Settable<Cat> s = (obj, name, age) -> {
obj.setName(name);
obj.setAge(age);
};
// Call a method to which we pass the cat and lambda
changeEntity(myCat, s);
// Display the cat on the screen and see that its state has changed (it has a name and age)
System.out.println(myCat);
}
private static <T extends HasNameAndAge> void changeEntity(T entity, Settable<T> s) {
s.set(entity, "Smokey", 3);
}
}
interface HasNameAndAge {
void setName(String name);
void setAge(int age);
}
interface Settable<C extends HasNameAndAge> {
void set(C entity, String name, int age);
}
class Cat implements HasNameAndAge {
private String name;
private int age;
@Override
public void setName(String name) {
this.name = name;
}
@Override
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
ืชืึนืฆึธืึธื:
Cat{name='null', age=0}
Cat{name='Smokey', age=3}
ืืคื ืฉืืชื ืืืื ืืจืืืช, Cat
ืืืืืืืงื ืืื ืืฆื ืืื, ืืื ืืืฆื ืืฉืชื ื ืืืืจ ืฉืืฉืชืืฉื ื ืืืืืื ืืืืื. ืืืืืื ืืืื ืืฉืชืืืื ืืฆืืจื ืืืฉืืืช ืขื ืชืจืืคืืช ืื ืจืืืช. ืืื ืื ืื ื ืฆืจืืืื ืืืฆืืจ Dog
ืืืืงื ืฉืื ืืืืฉืืช ืืช HasNameAndAge
, ืื ื ืืื ืืืฆืข ืืช ืืืชื ืคืขืืืืช ืืฉืืื Dog
ืืืื main()
โฏืืฉื ืืช ืืช ืืืืื ืืืืืื. ืืฉืืื 3. ืืชืื ืืืฉืง ืคืื ืงืฆืืื ืื ืขื ืฉืืื ืฉืืืงืืช ืืกืคืจ ืืืืืืจื ืขืจื ืืืืืื ื. ืืชืื ืืืืืฉ ืฉื ืืืฉืง ืืื ืืืืืื ืืืืื ืฉืืืืืจ true ืื ืืืกืคืจ ืฉืขืืจ ืืชืืืง ื-13. ืืฉืืื 4. ืืชืื ืืืฉืง ืคืื ืงืฆืืื ืื ืืฉืืื ืฉืืืงืืช ืฉืชื ืืืจืืืืช ืืื ืืืืืจื ืืืจืืืช. ืืชืื ืืืืืฉ ืฉื ืืืฉืง ืืื ืืืืืื ืืืืื ืฉืืืืืจ ืืช ืืืืจืืืช ืืืจืืื ืืืชืจ. ืืฉืืื 5. ืืชืื ืืืฉืง ืคืื ืงืฆืืื ืื ืขื ืฉืืื ืฉืืืงืืช ืฉืืืฉื ืืกืคืจื ื ืงืืื ืฆืคื: a, b ื-c ืืื ืืืืืจื ืืกืคืจ ื ืงืืื ืฆืคื. ืืชืื ืืืฉืื ืฉื ืืืฉืง ืืื ืืืืืื ืืืืื ืฉืืืืืจ ืืช ืืืืืื. ืืืงืจื ืฉืฉืืืช, ืืื D = b^2 โ 4ac
. ืืฉืืื 6. ืืืืฆืขืืช ืืืืฉืง ืืคืื ืงืฆืืื ืื ืืืฉืืื 5, ืืชืื ืืืืื ืืืืื ืฉืืืืืจ ืืช ืืชืืฆืื ืฉื a * b^c
. ืืกืืจ ืขื ืืืืืื ืืืืื ืื'ืืืื. ืขื ืืืืืืืช ืืืฉืืืืช. ืืืง 2
GO TO FULL VERSION