JAVA 8 Lambda式基礎使用

4379 ワード

/**
 * JAVA8 Lambda       
 * GitHub  :https://github.com/hack-feng/algorithm
 * CSDN  :https://blog.csdn.net/qq_34988304/article/details/100920460
 *     :[email protected]
 */
public class Lambda {
    @SuppressWarnings("OptionalGetWithoutIsPresent")
    public static void main(String[] args) throws InterruptedException {

        System.out.println("-----------------------1、Lambda      --------------------------");
        //   
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(" Lambda      ");
            }
        }).start();

        // Lambda
        new Thread(() -> System.out.println("Lambda      ")).start();

        Thread.sleep(100);

        System.out.println("-----------------------2、Lambda for    --------------------------");
        List forTestList = new ArrayList<>();
        forTestList.add("a");
        forTestList.add("b");
        forTestList.add("c");

        for (int i = 0; i < forTestList.size(); i++) {
            System.out.println("  for  " + forTestList.get(i));
        }

        for (String flag : forTestList) {
            System.out.println("forEach  " + flag);
        }

        forTestList.forEach(list -> System.out.println("Lambda   " + list));

        System.out.println("-----------------------3、Lambda       --------------------------");
        System.out.println("     :");
        List userList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User(i, "  "+ i,  new Random().nextInt(5));
            System.out.println(user.toString());
            userList.add(user);
        }

        System.out.println("  age  --------------------------------------------------------");
        Map> groupMap = userList.stream().collect(Collectors.groupingBy(User::getAge));
        for(Map.Entry map : groupMap.entrySet()){
            System.out.println(map.getKey() + "    " + map.getValue());
        }

        System.out.println("  age  --------------------------------------------------------");
        List filerList = userList.stream().filter(list -> list.getAge() == 3).collect(Collectors.toList());
        filerList.forEach(list -> System.out.println("age 3    :" + list.toString()));

        System.out.println("  age, id      ----------------------------------------------------");
        userList.sort(Comparator.comparing(User::getAge).thenComparing(User::getId).reversed());
        userList.forEach(list -> System.out.println(list.toString()));

        System.out.println("list  map---------------------------------------------------------------");
        Map map = userList.stream().collect(Collectors.toMap(User :: getId, list -> list));
        map.forEach((k, v) -> System.out.println("id:" + k + "            value:" + v.toString()));

        System.out.println("  map value  age 3 id-----------------------------------------------");
        map.forEach((k, v) -> {
            if(v.getAge() == 3){
                System.out.println("age   3 id :" + k);
            }
        });

        System.out.println("           -------------------------------------------------------");
        Integer maxId = userList.stream().map(User::getId).max(Integer::compareTo).get();
        System.out.println("  id  :" + maxId);
        Integer minId = userList.stream().map(User::getId).min(Integer::compareTo).get();
        System.out.println("  id  :" + minId);
    }

    //   User ,      
    static class User{
        private Integer id;
        private String name;
        private Integer age;

        User(Integer id, String name, Integer age){
            this.id = id;
            this.name = name;
            this.age = age;
        }
        Integer getId() {
            return id;
        }

        Integer getAge() {
            return age;
        }

        public String toString(){
            return "id="+this.id + ",name="+this.name+",age="+this.age;
        }
    }
}