java8新特性 Lambda表示式

2021-09-17 03:59:47 字數 2215 閱讀 5641

private static void comparecreatethread() 

},"t1").start();

//建立乙個執行緒(lambda表示式)

new thread(() -> system.out.printf("執行緒[%s]正在執行\n",thread.currentthread().getname()),"t2").start();

}

執行結果:

執行緒[t1]正在執行

執行緒[t2]正在執行

listlist = arrays.aslist(1,3,2);

//傳統排序及遍歷方式

collections.sort(list, new comparator() else

}});for(integer i : list)

system.out.println();

//使用lambda表示式

//倒序排序

list.sort((a,b) -> b - a);

list.foreach(i -> system.out.print(i + "\t"));

執行結果:

1    2    3    

3    2    1

//操作集合

//使用.map方式操作集合中的元素

listlist = arrays.aslist(10,15,20);

list.stream().map(i -> i*5).foreach(system.out::println);

system.out.println("--------------------------------");

//使用.reduce方式將集合中所有的值求和

integer sums = list.stream().reduce((sum, i) -> sum + i).get();

system.out.println(sums);

執行結果:

//使用filter過濾掉一部分元素

listlist = arrays.aslist(10,15,20,3,4,6);

listcollect = list.stream().filter(i -> i % 5 == 0).collect(collectors.tolist());

collect.foreach(system.out::println);

執行結果:

/**過濾字串需要與predicate類配合使用*/

listlist = arrays.aslist("start","end","endwiths","hello");

//取出集合中以e開頭的元素

system.out.println("以e開頭的元素:");

filterstring(list,e -> e.startswith("e"));

//取出集合中以o結尾的元素

system.out.println("以o結尾的元素:");

filterstring(list,e -> e.endswith("o"));

//取出集合中包含a的元素

system.out.println("包含a的元素:");

filterstring(list,e -> e.contains("a"));

system.out.println("長度大於3的元素:");

filterstring(list,e -> e.length() > 3);

system.out.println("全部元素:");

filterstring(list,e -> true);

system.out.println("將所有元素過濾掉:");

filterstring(list,e -> false);

執行結果:

以e開頭的元素:

endendwiths

以o結尾的元素:

hello

包含a的元素:

start

長度大於3的元素:

start

endwiths

hello

全部元素:

start

endendwiths

hello

將所有元素過濾掉:

java8新特性之一lambda

lambda結合函式式介面使用,函式式介面 functional inte ce 就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。1 可選型別宣告 不需要宣告引數型別,即直接可以寫引數,不需要宣告型別,編譯器可以自動識別型別 2 可選的引數圓括號 乙個引數可以不要圓括號,多個引數需要圓...

Java8新特性 Lambda表示式

lambda表示式的本質只是乙個語法糖,由編譯器推斷並幫你轉換包裝為常規的 因此你可以使用更少的 來實現同樣的功能。基本語法 parameters expression parameters 簡單例子 僅用三行 完成 排序後輸出列表 public static void main string ar...

java8新特性之lambda表示式

lambda表示式需要支援函式式介面 介面中只有乙個抽象方法的介面 可以用 functionalinte ce註解修飾介面,這樣如果定義超過乙個抽象方法就會報錯 幾種格式 格式一 無引數,無返回值 system.out.println hello 格式二 有乙個引數,無返回值 x system.ou...