zoukankan      html  css  js  c++  java
  • # 今天学习了一下java8的lambda表达式

    今天学习了一下java8的lambda表达式

    这个东西我目前目标就是看懂吧,我见识比较少,感觉这个用的地方还不是很多。

    以一个自定义列表排序的例子作为记录吧。

    首先匿名内部类一般是在你想用一个类作为参数并且它以后也没什么用了的时候,你嫌new它出来很麻烦,你就把它写到一起了。

    1. 不用匿名内部类的时候,是这么写的
    List<Integer> ls= new ArrayList<Integer>();
            
    Comparator<Integer> cp = new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    };
    Collections.sort(ls);
    

    这时候的代码想干什么很明显,但是太长了,容易使人失去兴趣。

    1. 这时就可以用匿名内部类使它变短一点
    List<Integer> ls= new ArrayList<Integer>();
    
    Collections.sort(ls, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2 - o1;
                }
            });
    

    这时候就把那个其实是一次性的类给他永远留在调用它的小括号里了。

    1. 要是用lambda表达式的话
    List<Integer> ls= new ArrayList<Integer>();
    
    Collections.sort(ls, (o1, o2) -> o2 - o1);
    

    可以看到代码变得非常的简洁。

    • 但是lambda表达式只能用来重写某一个方法,也就是说如果你那个接口有两个方法要重写的话,他就不知道你怎么对应了,因此就用不上了。
    Stay hungry
  • 相关阅读:
    c++计算器后续(1)
    第七次作业
    第六次作业之计算器图形界面(之骗分)
    C++课堂作业二之反转链表
    第五次作业(计算器第三步之文件输入输出)
    ARP详解和ARP攻击
    网络基础-端口
    网络基础-子网掩码
    Informatica ODBC的使用
    linux7 grub配置文件 linux6 grub配置文件
  • 原文地址:https://www.cnblogs.com/agnes6/p/13597718.html
Copyright © 2011-2022 走看看