1. 程式人生 > 實用技巧 ># 今天學習了一下java8的lambda表示式

# 今天學習了一下java8的lambda表示式

今天學習了一下java8的lambda表示式

這個東西我目前目標就是看懂吧,我見識比較少,感覺這個用的地方還不是很多。

以一個自定義列表排序的例子作為記錄吧。

首先匿名內部類一般是在你想用一個類作為引數並且它以後也沒什麼用了的時候,你嫌new它出來很麻煩,你就把它寫到一起了。

  1. 不用匿名內部類的時候,是這麼寫的
List<Integer> ls= new ArrayList<Integer>();
        
Comparator<Integer> cp = new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
};
Collections.sort(ls);

這時候的程式碼想幹什麼很明顯,但是太長了,容易使人失去興趣。

  1. 這時就可以用匿名內部類使它變短一點
List<Integer> ls= new ArrayList<Integer>();

Collections.sort(ls, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });

這時候就把那個其實是一次性的類給他永遠留在呼叫它的小括號裡了。

  1. 要是用lambda表示式的話
List<Integer> ls= new ArrayList<Integer>();

Collections.sort(ls, (o1, o2) -> o2 - o1);

可以看到程式碼變得非常的簡潔。

  • 但是lambda表示式只能用來重寫某一個方法,也就是說如果你那個介面有兩個方法要重寫的話,他就不知道你怎麼對應了,因此就用不上了。