前言
好像JDK9都快出來了現在才寫JDK8 orz
好吧其實也是之前寫的筆記一直沒放上來
正文
在JDK8之前,如果你想排序,你可能會這麼做
好像JDK9都快出來了現在才寫JDK8 orz
好吧其實也是之前寫的筆記一直沒放上來
正文
在JDK8之前,如果你想排序,你可能會這麼做
String[]
names = {"C333","A1","B22"};
Arrays.sort(names,
new Comparator<String>() {
public
int compare(String name1, String name2) {
return
name1.length() - name2.length();
}
});
for(String name:names) System.out.println(name);
Or
String[]
names = {"C333","A1","B22"};
Comparator<String>
comparator = new Comparator<String>() {
@Override
public
int compare(String name1, String name2) {
return
name1.length() - name2.length();
}
};
Arrays.sort(names,comparator);
for(String
name:names) System.out.println(name);
這真的又臭又長對吧?
那麼讓我們看看Lambda
Comparator<String>
comparator =(String name1,String
name2)->name1.length()-name2.length();
Or
Comparator<String>
comparator =(name1,name2)->name1.length()-name2.length();
所以你可以這麼更改它
String[] names = {"C333","A1","B22"};
Arrays.sort(names,(name1,name2)->name1.length()-name2.length());
for(String
name:names) System.out.println(name);
恭喜!你學會使用它了
不過還有一件事
當你學到一些新東西時
你會無時無刻都使用它
因此你的程式可能充滿著滿滿的Lambda
來看看這個情境吧
public class
comparator {
public int
compare(String s1, String s2) {
return s1.length() -
s2.length();
}
}
public class main {
public static void
main(String[] args) {
String[] names =
{"C333","A1","B22"};
comparator c = new
comparator();
Arrays.sort(names,(name1,name2)->c.compare(name1,name2));
for(String
name:names) System.out.println(name);
}
}
這麼做很好的,但我們可以讓它更好
方法參照,這是配合Lambda新推出的功能
語法:class::method
所以我們可以這麼改
Arrays.sort(names,c::compare);
for(String name:names) System.out.println(name);
補個重點: Lambda的語法Input -> body