常见的Lambda表达式

遍历

    public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange");
        System.out.println("常规遍历");
        for (String s : list) {
            System.out.println(s);
        }

        System.out.println("lambda遍历1");
        list.forEach(System.out::println);

        System.out.println("lambda遍历2");
        list.forEach(s -> {
                System.out.println(s);
        });
    }
常规遍历
apple
banana
orange
lambda遍历1
apple
banana
orange
lambda遍历2
apple
banana
orange

排序

     public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange");
        System.out.println("常规排序");
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
        System.out.println(list);

        System.out.println("lambda排序");
        Collections.sort(list,((o1, o2) -> o1.compareTo(o2)));
        System.out.println(list);
    }
常规排序
[apple, banana, orange]
lambda排序
[apple, banana, orange]

过滤

public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange");
        ArrayList<String> list2 = new ArrayList<>();
        System.out.println("常规过滤");
        for (String s : list) {
            if(s.startsWith("a")) {
                list2.add(s);
            }
        }
        System.out.println(list2);

        System.out.println("lambda过滤");
        List<String> list3 = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
        System.out.println(list3);
    }
常规过滤
[apple]
lambda过滤
[apple]

映射

public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange");
        ArrayList<Integer> list2 = new ArrayList<>();
        System.out.println("常规映射");
        for (String s : list) {
            list2.add(s.length());
        }
        System.out.println(list2);

        System.out.println("lambda映射");
        List<Integer> collect = list.stream().map(s -> s.length()).collect(Collectors.toList());
        System.out.println(collect);
    }
常规映射
[5, 6, 6]
lambda映射
[5, 6, 6]

求和

public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        int sum = 0;
        for (Integer v : list) {
            sum += v;
        }
        System.out.println("常规求和");
        System.out.println(sum);

        System.out.println("lambda求和");
        // 第一个参数代表初始值(目前设置的是0)
        Integer reduce = list.stream().reduce(0, (a, b) -> a + b);
        System.out.println(reduce);
    }
常规求和
15
lambda求和
15

分组

public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange");
        Map<Integer,List<String>> groups = new HashMap<>();
        System.out.println("常规分组");
        for (String s : list) {
            int length = s.length();
            if(!groups.containsKey(length)) {
                groups.put(length,new ArrayList<>());
            }
            groups.get(length).add(s);
        }
        System.out.println(groups);

        System.out.println("lambda分组");
        Map<Integer, List<String>> collect = list.stream().collect(Collectors.groupingBy(String::length));
        System.out.println(collect);
    }
常规分组
{5=[apple], 6=[banana, orange]}
lambda分组
{5=[apple], 6=[banana, orange]}

实现接口方法

public interface MyInterface {
    public void doSomething(String s);
}
public static void main(String[] args) {
        MyInterface myInterface = new MyInterface() {
            @Override
            public void doSomething(String s) {
                System.out.println(s);
            }
        };
        myInterface.doSomething("hello world");
    }
hello world