Java 8 学习笔记之lambda

一、基本介绍

lambda表达式,即带有参数的表达式,是Java 8新出的用来替代匿名内部类的新功能,可以提高代码可读性,减少代码冗余。

二、基本语法

  1. lambda表达式的基本格式为(x1,x2)->{表达式…};
  2. 参数数据类型可以省略;
  3. 参数列表:参数可以为多个,为一个的时候左右括号可以省略,也可以无参数,括号不可省略;
  4. 表达式为一行是括号可以省略。

三、代码实例

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Lambda {
    static class Student{
        private int id;
        private String name;

        public Student(int id, String name) {
            this.id = id;
            this.name = name;
        }

        public int getId() {
            return id;
        }
        public String getName() {
            return name;
        }
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    '}';
        }
    }
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student(100,"xin"));
        list.add(new Student(3,"wang"));
        list.add(new Student(23,"hai"));
        list.add(new Student(123,"sss"));
        list.add(new Student(14,"name"));
        list.add(new Student(343,"name"));
        list.add(new Student(555,"name"));

        //传统方法实现
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return Integer.compare(o1.getId(),o2.getId());
            }
        });

        //lambda方法实现
        list.stream()
                .sorted((s1,s2) -> Integer.compare(s1.getId(),s2.getId()))
                .forEach(s -> System.out.println(s));
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34389547/article/details/81220215