Java8 lambda表达式常用方法

xiaoxiao2021-02-28  87

这里记录的是平时经常遇到的用到lambda表达式的场景。 闲话不多说,直接上代码。

先定义一个用户类。

class User { Integer id; String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 场景:有个User的List,需要将所有的用户ID取出来。 List<Integer> userIds = users.stream().map(u -> u.getId()).collect(Collectors.toList()); 场景:有个User的List,需要将所有的用户ID取出来,还得注意去重 List<Integer> userIds = users.stream().map(u -> u.getId()).distinct().collect(Collectors.toList()); 场景:有个User的List,需要将其放到HashMap里,key为用户ID,value为该User Map<Integer, User> userMap = users.stream().collect(Collectors.toMap(User :: getId, u -> u)); 场景:有个User的List,需要将其放到HashMap里,key为用户ID,value为用户名称 Map<Integer, String> userMap = users.stream().collect(Collectors.toMap(User :: getId, u -> u.getName())); 场景:有个User的List,需要将其放到HashMap里,key为用户ID,value为该User。User可能会重复,也就是ID会重复。按照上面的做法会导致如下错误: Exception in thread "main" java.lang.IllegalStateException: Duplicate key 123456 /** * 需要指定在key重复时选择保留旧值还是新值 */ Map<Integer, User> userMap = users.stream().collect(Collectors.toMap(User :: getId, u -> u, (oldV, newV) -> newV)); 场景:有个User的List,需要按照id的大小进行排序 List<User> users = new ArrayList<User>(); users.sort((u1, u2) -> u1.getId().compareTo(u2.getId()));

后续遇到了其他场景再继续添加… …

转载请注明原文地址: https://www.6miu.com/read-75076.html

最新回复(0)