java8 Stream流使用笔记

1.使用Comparator 来排序一个list

sorted(Comparator.comparingInt(SysDept::getSort))
// 查询全部部门
    List<SysDept> deptAllList = deptMapper.selectList(Wrappers.emptyWrapper());
    // 查询数据权限内部门
    List<Integer> deptOwnIdList = deptMapper.selectListByScope(Wrappers.emptyWrapper(), new DataScope()).stream()
        .map(SysDept::getDeptId).collect(Collectors.toList());

    // 权限内部门
    List<TreeNode<Integer>> collect = deptAllList.stream()
        .filter(dept -> dept.getDeptId().intValue() != dept.getParentId())
        .sorted(Comparator.comparingInt(SysDept::getSort)).map(dept -> {
          TreeNode<Integer> treeNode = new TreeNode();
          treeNode.setId(dept.getDeptId());
          treeNode.setParentId(dept.getParentId());
          treeNode.setName(dept.getName());
          // 有权限不返回标识
          treeNode.setExtra(MapUtil.of("isLock", !deptOwnIdList.contains(dept.getDeptId())));
          return treeNode;
        }).collect(Collectors.toList());

2.切割一个字符串,然后收集成list

		List<SysRoleMenu> roleMenuList = Arrays.stream(menuIds.split(",")).map(menuId -> {
			SysRoleMenu roleMenu = new SysRoleMenu();
			roleMenu.setRoleId(roleId);
			roleMenu.setMenuId(Integer.valueOf(menuId));
			return roleMenu;
		}).collect(Collectors.toList());

3.获取指定字段

List<String> nameList = equipmentService.lambdaQuery().select(Equipment::getEquipmentName)
        .list().stream().map(Equipment::getEquipmentName)
        .collect(Collectors.toList());

4.根据某个字段去重

	// 去掉重复的部门
List<Long> collect = list.stream().collect(
				collectingAndThen(
					toCollection(() -> new TreeSet<IssuedUser>(comparing(IssuedUser::getExecuteDetachmentId))), ArrayList::new)) // 去重
				.stream().map(o -> o.getExecuteDetachmentId()).collect(Collectors.toList());

 

语雀地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值