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
  • 相关阅读:
    XML介绍
    JavaScript基础
    pygame模块参数汇总(python游戏编程)
    CSS3
    CSS( Cascading Style Sheets )简书
    HTML5
    用python进行应用程序自动化测试(uiautomation)
    HTML入门
    Selenium2 (python)
    C#快速入门
  • 原文地址:https://www.cnblogs.com/agnes6/p/13597718.html
Copyright © 2011-2022 走看看