lambda表达式运用 ----demo

package cn.tencent.data.ext.service.handler.common.util;

import cn.tencent.data.ext.vo.User;

import java.util.*;
import java.util.stream.Collectors;

import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;

public class test {
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User(21L, "张三"));
        list.add(new User(25L, "李四"));
        list.add(new User(22L, "王五"));
        list.add(new User(19L, "赵柳"));
        list.add(new User(32L, "王5"));
        list.add(new User(29L, "王6"));
        list.add(new User(21L, "王7"));
        list.add(new User(21L, "王7"));
        System.out.println("-------------------对象根据年龄属性升序排序----------------------");
       List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
        newList.forEach(
                s->System.out.println("姓名:" + s.getName() + "   "  + "年龄:" + s.getAge())
        );
        System.out.println("------------------对象根据年龄属性降序排序-----------------------");
       List<User> newList1 = list.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
        newList1.forEach(
                s->System.out.println("姓名:" + s.getName() + "   "  + "年龄:" + s.getAge())
        );
        System.out.println("------------------提取对象属性生成list-----------------------");
        List<Long> ids = list.stream().map(User::getAge).collect(Collectors.toList());
        System.out.println(ids);
        System.out.println("------------------list升序排序-----------------------");
        Collections.sort(ids);
        System.out.println(ids);
        System.out.println("------------------list倒序排序-----------------------");
        ids.sort(Comparator.reverseOrder());
        System.out.println(ids);
        System.out.println("------------------过滤出符合条件的数据-----------------------");
        List<User> newList2 = list.stream().filter(o->!o.getAge().equals(32L)).collect(Collectors.toList());
        newList2.forEach(o->System.out.println(o.getAge()));
        System.out.println("-------------------去重----------------------");
         list = list.stream().collect(collectingAndThen(toCollection(()->new TreeSet<>(comparingLong(User::getAge))),ArrayList::new));
         list.forEach(User->System.out.print(User));
        System.out.println("------------------user-----------------------");
        list.stream().distinct().forEach(s->System.out.println("姓名:" + s.getName() + "   "  + "年龄:" + s.getAge()) );
        System.out.println("-----------------去重------------------------");
        List<String> list2 = Arrays.asList("Geeks", "for", "Geeks",
                "GeeksQuiz", "for", "GeeksforGeeks","GeeksforGeeks");
        list2.stream().distinct().forEach(System.out::println);
        /**
         * List -> Map
         * 需要注意的是:toMap 如果集合对象有重复的key,会报错Duplicate key ....
         *  apple1,apple12的id都为1。可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
         */
        System.out.println("-----------------List -> Map------------------------");
        Map<Long, User> userMap = list.stream().collect(Collectors.toMap(User::getAge, a -> a, (k1, k2) -> k1));
        System.out.println(userMap);
        System.out.println("-----------------Map遍历------------------------");
        Map<String, String> map = new HashMap<>();
        map.put("name1", "刘德华");
        map.put("name2", "黎明");
        map.put("name3", "张学友");
        map.put("name4", "郭富城");
        map.forEach((key,value) -> {
            System.out.println(key + "=" + value);
        });
       System.out.println("-----------------Map中按key移除值------------------------");
        System.out.println(map);
        for (String s : map.keySet()) {
            if (s == "name1") {
                map.remove("name1");
            }
        }
        System.out.println(map);
        System.out.println("-----------------Map中按value移除值------------------------");
        Collection<String> collect = map.values();
        System.out.println(map);
        if (collect.contains("郭富城") == true) {
            collect.remove("郭富城");
        }
        System.out.println(map);
    }
}

package cn.tencent.data.ext.vo;

public class User {
    private Long age;
    private String name;
    public User(Long age, String name) {
        this.age = age;
        this.name = name;
    }
    public Long getAge() {
        return age;
    }

    public void setAge(Long age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}
posted @ 2023-05-09 17:23  我的心儿  阅读(24)  评论(0)    收藏  举报