java8 lambda表达式语法及简单实例

首先,我们来看下lambda的两个实例,一个是用来演示简化内部类的用法,另一个则是演示遍历集合的用法

//1.简化内部类
    //Java8之前新建一个线程
    @Test
    public void oldInteriorClass(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("这是老的内部类的写法");
            }
        }).start();
    }
    
    //java8写法 新建一个线程
    @Test
    public void newInteriorClass() {
        new Thread(() -> System.out.println("这是用java8Lamabda表达式写的内部类")).start();
    }
    
    //Java8之前遍历集合
    @Test
    public void traverseCollections() {
        List<String> list = Arrays.asList(new String[] {"e","f","a"});
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
        Iterator<String> it = list.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
    
    //java8写法 遍历集合
    @Test
    public void newtraverseCollections() {
        List<String> list = Arrays.asList(new String[] {"e","f","a"});
        Collections.sort(list, (str1,str2) -> str1.compareTo(str2) );
        list.forEach(ff -> System.out.println(ff));
    }

下面我们来看lambda表达式语法

1.1.1lambda表达式的一般语法

(Type1 param1, Type2 param2, ..., TypeN paramN) -> {
  statment1;
  statment2;
  //.............
  return statmentM;
}

这是lambda表达式的完全式语法,后面几种语法是对它的简化。

1.1.2单参数语法

param1 -> {
  statment1;
  statment2;
  //.............
  return statmentM;
}

当lambda表达式的参数个数只有一个,可以省略小括号

例如:将列表中的字符串转换为全小写

@Test
    public void xxx() {
        List<String> list = Arrays.asList(new String[] {"E","F","A"});
        Collections.sort(list, (str1,str2) -> str1.compareTo(str2) );
        list.forEach(ff -> System.out.println(ff));
        List<String> lowercaseNames1 = list.stream().map(name -> {return name.toLowerCase();}).collect(Collectors.toList());
        lowercaseNames1.forEach(ff -> System.out.println(ff));
    }

1.1.3单语句写法

param1 -> statment

当lambda表达式只包含一条语句时,可以省略大括号、return和语句结尾的分号

例如:将列表中的字符串转换为全小写

List<String> proNames = Arrays.asList(new String[]{"Ni","Hao","Lambda"});

List<String> lowercaseNames2 = proNames.stream().map(name -> name.toLowerCase()).collect(Collectors.toList());

1.1.4方法引用写法

(方法引用和lambda一样是Java8新语言特性,后面会讲到)

Class or instance :: method

例如:将列表中的字符串转换为全小写

List<String> proNames = Arrays.asList(new String[]{"Ni","Hao","Lambda"});

List<String> lowercaseNames3 = proNames.stream().map(String::toLowerCase).collect(Collectors.toList());

参考文献:https://blog.csdn.net/bitcarmanlee/article/details/70195403

                   http://www.importnew.com/16436.html

                  https://www.cnblogs.com/aoeiuv/p/5911692.html

猜你喜欢

转载自blog.csdn.net/bird_tp/article/details/83861879