1. 程式人生 > >Java8 lambda表示式使用總結

Java8 lambda表示式使用總結

總結了一下自己常用的lambda式。

package com.gm.test;

import org.junit.Test;

import java.util.*;
import java.util.stream.Collectors;

import static java.lang.System.out;

/**
 * Created by zhangshuai on 2017/8/26.
 */
public class LambdaTest {

    private List<TestClass> list = null;

    private void initMethod
(){ list = new ArrayList<>(); list.add(new TestClass(1,"1")); list.add(new TestClass(2,"a")); list.add(new TestClass(3,"c")); } /** * 轉簡單的foreach迴圈 */ @Test public void testForEach(){ // list.forEach(p -> { // p.setOne(p.getOne() + 1);
// }); //引數是Consumer<? super T> list.stream().forEach(p -> p.setOne(p.getOne() + 1) ); System.out.println(list); } /** * 轉list為Map */ @Test public void testListToMap(){ this.initMethod(); // Collectors.toMap(TestClass :: getOne(key值), p -> p(value))
//引數是兩個Function // Map<Integer,Object> map = list.stream().collect(Collectors.toMap(TestClass :: getOne, p -> p)); Map<Integer,Object> map = list.stream().collect(Collectors.toMap(TestClass :: getOne, p -> p.getTwo())); out.println(map); } /** * 排序 */ @Test public void testSorted(){ initMethod(); //預設的排序 // 引數是Comparator<? super T> list.stream().sorted(Comparator.comparingInt(TestClass :: getOne)); out.println(list); //修改排序規則後的排序 //引數是Comparator<? super T> list.sort((TestClass t1, TestClass t2) -> t2.getOne() - t1.getOne()); out.println(list); } /** * 過濾 */ @Test public void testFilter(){ initMethod(); //filter的引數是Predicate<? super T> List<TestClass> list2 = list.stream().filter(p -> p.getOne() > 2).collect(Collectors.toList()); System.out.println(list2); } /** * max or min(獲取最大或者最小) */ public void testMaxOrMin(){ initMethod(); //引數是Comparator<? super T> list.stream().max(Comparator.comparingInt(TestClass :: getOne)); out.println(); } }

注意各種方法的引數,我本人是根據引數來區分如何寫的
以上是我自己常用的lambda表示式,更多請參考,developerworks我是參考這個學習的