Java8 :: 用法 (JDK8 雙冒號用法)

jdk8中使用了::的用法。就是把方法當作參數傳到stream內部,使stream的每一個元素都傳入到該方法裏面執行一下,雙冒號運算就是Java中的[方法引用],[方法引用]的格式是spa

  類名::方法名 

注意此處沒有()。code

案例:

表達式:blog

person -> person.getAge();

使用雙冒號:get

Person::getAge

表達式:io

new HashMap<>()

使用雙冒號:class

HsahMap :: new

部分代碼案例

未使用雙冒號stream

public class MyTest {
    public static void main(String[] args) {
        List<String> a1 = Arrays.asList("a", "b", "c");

        for (String a : a1) {
            printValur(a);
        };

        a1.forEach(x -> MyTest.printValur(x));


    }

    public static void printValur(String str) {
        System.out.println("print value : " + str);
    }
}

使用後jdk

     a1.forEach(MyTest::printValur);

        Consumer<String> consumer = MyTest::printValur;
        a1.forEach(x -> consumer.accept(x));

未使用雙冒號:List

     List<String> list = a1.stream().map(x -> x.toUpperCase()).collect(Collectors.toList());
     System.out.println(list.toString());

使用雙冒號:map

        ArrayList<String> collect = a1.stream().map(String::toUpperCase).collect(Collectors.toCollection(ArrayList::new));
        System.out.println(collect.toString());
相關文章
相關標籤/搜索