设为首页 加入收藏

TOP

Java的Lambda表达式总结-JDK1.8(一)
2023-07-25 21:42:49 】 浏览:70
Tags:Java Lambda -JDK1.8
前言:
  lambda是一个匿名函数
  ()里的表示参数
  {}里的表示方法体
  -> 表示lambda运算符
 
常用的表达式如下:
 
一、groupingBy用法
目的:数据库(想把相同的合并到一起)
代码示例:
//1.分页查询,通过重点任务主题、重点事项、重点负责人或任务的开始时间、结束时间
List<ImportantTaskListDTO> importantTaskListDTOList = importantTaskMapper.getList(userId, taskDO, importantTaskSearchDTO);
//2.找每个重点任务对应的单个或多个负责人
//生成一个map,键是按照groupingBy的分组编号,值是对应的分组list集合
Map<Long, List<ImportantTaskListDTO>> directorListMap = importantTaskListDTOList.stream().collect(Collectors.groupingBy(ImportantTaskListDTO::getTaskId));
 
 
二、foreach用法
//生成一个map,键是按照groupingBy的分组编号,值是对应的分组list集合
Map<Long, List<ImportantTaskListDTO>> directorListMap = importantTaskListDTOList.stream().collect(Collectors.groupingBy(ImportantTaskListDTO::getTaskId));
logger.info("directorListMap="+directorListMap);
importantTaskListDTOList.forEach(v1 -> {
    Long taskId = v1.getTaskId();
    List<ImportantTaskListDTO> directorList = directorListMap.get(taskId);
 
    StringBuilder directorNamesBuilder = new StringBuilder();
    directorList.forEach(v2 -> {
        Long directorUserId = v2.getDirectorUserId();
        String directorUserName = v2.getDirectorUserName();
        directorNamesBuilder.append(directorUserName).append(",");
    });
 
    String directorNames = StringBuilderUtil.removeCharacterOfEndOfMessage(directorNamesBuilder);
    //负责人名称们(逗号隔开)
    v1.setDirectorNames(directorNames);
});
 
 
三、相同list去重(list里面大部分一致,小部分不一致的,但是这小部分不返给前端)
// 原list去重,去掉完全一样的list行,通过taskId随机去重,利用的是treeSet的特性
importantTaskListDTOList = importantTaskListDTOList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(ImportantTaskListDTO::getTaskId))), ArrayList::new));
参考:https://blog.csdn.net/Oaklkm/article/details/127074712?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-127074712-blog-117334264.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-127074712-blog-117334264.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=6
 
 
四、stream().map().collect(Collectors.toList())用法,把list对象里面的一个列生成对应的一个新list集合
List<AbnormalBuild> abnormalBuildList = this.list(new QueryWrapper<AbnormalBuild>().lambda().eq(AbnormalBuild::getStatus, Status.NORMAL.getCode()).eq(AbnormalBuild::getProjectId, SecurityUtils.getProjectId())); 
List<String> resourceList = abnormalBuildList.stream().map(AbnormalBuild::getResourceId).collect(Collectors.toList());
LIST交集,差集,并集,
public class CollectionsTest {
    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
    &
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JUC学习-线程池部分 下一篇算法21:折纸问题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目