知识点记录-JAVA8常用语法特点lambda表达式

知识点记录-JAVA8常用语法特点lambda表达式

练习lambda表达式

package com.test.jdk8;

//语法格式如下:
//(parameters) -> expression
//或
//(parameters) ->{ statements; }

import java.util.*;

interface MathOperation {
    int operation(int a, int b);
}

interface GreetingService {
    void sayMessage(String message);
}

public class TestLambda {

    final static String hello = "Hello! "; // 访问外部变量
    private static int outStaticInt = 1; // 修改外部变量

    public static void main(String[] args) {

        final String hello1 = "Hello1! "; // 访问局部变量
        int inInt = 1; // 修改局部变量异常

        TestLambda testLambda = new TestLambda();

        //1. 排序
        List<String> names1 = new LinkedList<>();
        names1.add("names1");
        names1.add("names2");

        List<String> names2 = new LinkedList<>();
        names2.add("names2");
        names2.add("names1");

        System.out.println("sortUsingJava7");
        testLambda.sortUsingJava7(names1);
        System.out.println(names1);
        System.out.println("sortUsingJava8");
        testLambda.sortUsingJava8(names2);
        System.out.println(names2);

        List<String> names = Arrays.asList("a", "bc", "for");
        Collections.sort(names, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return b.compareTo(a);
            }
        });
        printList(names);
        Collections.sort(names, (String a, String b) -> {
            return b.compareTo(a);
        });
        printList(names);
        Collections.sort(names, (String a, String b) -> b.compareTo(a));
        printList(names);
        Collections.sort(names, (a, b) -> b.compareTo(a));
        printList(names);
        Collections.sort(names, Comparator.naturalOrder());
        printList(names);
        Collections.sort(names, Comparator.reverseOrder());
        printList(names);

        //2. + - * / 表达式
        MathOperation add = Integer::sum;
        MathOperation sub = (x, y) -> x - y;
        MathOperation multiply = (x, y) -> x * y;
        MathOperation divide = (x, y) -> x / y;

        System.out.println(add.operation(2, 5));
        System.out.println(sub.operation(2, 5));
        System.out.println(multiply.operation(2, 5));
        System.out.println(divide.operation(2, 5));

        //3. 访问外部变量
        GreetingService greetingService = s ->
        {
            outStaticInt = 2;
            System.out.println(hello + s);
        };
        greetingService.sayMessage("lambda");
        System.out.println("outStaticInt=" + outStaticInt);

        //4. 访问局部变量
        greetingService = s ->
        {
//            inInt = 6; // 修改局部变量异常
            System.out.println(hello1 + s);
        };
        greetingService.sayMessage("lambda");

        //访问MAP
        Map<String, String> map = new HashMap<>();
        for (int k = 0; k < 3; k++) {
            map.put("" + k, k + "");
        }
        map.forEach((k, v) -> System.out.println("k=" + k + "  v=" + v));

    }

    private static void printList(List<String> list) {
        list.stream().forEach(System.out::println);
    }

    // 使用 java 7 排序
    private void sortUsingJava7(List<String> names) {
        Collections.sort(names, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);
            }
        });
    }

    // 使用 java 8 排序
    private void sortUsingJava8(List<String> names) {
        Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值