使用对象里面属性一样的组成新map集合

文章主要展示了使用Java技术进行SQL分析(如DruidSqlUtil)和数据权限过滤的过程,包括流式处理(list转string、对象属性过滤)以及使用Collectors类对数据进行分组和筛选操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TableVo tableVo= AnalysisDruidSqlUtil.AnalysisSql(dto.getSqlInfo(),null);
List<MetaMappingInsideDto> metaMappingInsideDtos=new ArrayList<>();
List<TableMapVo> tableMapVos=tableVo.getTableMapVos();
Map<String, List<TableMapVo>> collect = tableMapVos.stream().collect(Collectors.groupingBy(v -> {
return v.getSourceTableName() +","+ v.getTargetTableName();
}));

list转string

qo.getDeptIds().stream().map(Objects::toString).collect(Collectors.joining(",")).toString();

根据对象属性过滤列表里面的属性过滤形成新集合

List<DataTablePermissionDo> tableTypes= dataTablePermissionService.findTableTypeListByQo(qo);

List<Person> personList = ... // 假设这是一个Person对象列表
Map<String, Person> personMap = personList.stream()
        .collect(Collectors.toMap(Person::getName, Function.identity()));

Map<Long, List<Integer>> dtypes = tableTypes.stream().collect(Collectors.groupingBy(DataTablePermissionDo::getMetaTableId,
Collectors.mapping(DataTablePermissionDo::getPermissionType,Collectors.toList())));
dataTablePermissions= dataTablePermissions.stream().collect(Collectors.filtering(tablePermissionDo -> {
List<Integer> dtypes1 = dtypes.get(tablePermissionDo.getMetaTableId());
boolean istrue=false;
if (dtypes1.contains(tablePermissionDo.getPermissionType())){
istrue=true;
}
return istrue;
},Collectors.toList()));

<trim prefix="AND (" prefixOverrides="OR" suffix=")">
<if test="deptIds != null and deptIds.size() > 0">
OR (
t.permission_object_type = 1
AND t.permission_object_id IN
<foreach collection="deptIds" item="deptId" open="(" close=")" separator=",">
#{deptId}
</foreach>
)
</if>

<if test="roleIds != null and roleIds.size() > 0">
OR (
t.permission_object_type = 2
AND t.permission_object_id IN
<foreach collection="roleIds" item="roleId" open="(" close=")" separator=",">
#{roleId}
</foreach>
)
</if>
<if test=" !spaceFiltering and projectIds != null and projectIds.size() > 0">
OR (
t.permission_object_type = 3
AND t.permission_object_id IN
<foreach collection="projectIds" item="projectId" open="(" close=")" separator=",">
#{projectId}
</foreach>
)
</if>
</trim>

Map<Long,String> tabbles=new HashMap<>();

tabbles= tableExtensionInsideDos.stream().collect(Collectors.toMap(TableExtensionInsideDo::getId,TableExtensionInsideDo::getTableName));

如果你想要从 List 对象集合中获取某个属性组成集合,可以使用 Java 8 的 Stream API 或者传统的 for 循环实现。下面分别给出这两种实现方式的示例代码。 Java 8 的 Stream API 实现方式: ```java List<User> userList = Arrays.asList( new User("Jack", 20), new User("Lucy", 18), new User("Tom", 25) ); List<Integer> ageList = userList.stream() .map(User::getAge) .collect(Collectors.toList()); System.out.println(ageList); // 输出结果为 [20, 18, 25] ``` 上述代码中,我们首先创建了一个 User 对象的 List 集合,然后使用 Stream API 中的 map 方法,将 List 中的每个 User 对象转换成其年龄属性,并使用 collect 方法将其转换为 List<Integer> 集合。最后通过打印输出的方式来展示转换结果。 传统的 for 循环实现方式: ```java List<User> userList = Arrays.asList( new User("Jack", 20), new User("Lucy", 18), new User("Tom", 25) ); List<Integer> ageList = new ArrayList<>(); for (User user : userList) { ageList.add(user.getAge()); } System.out.println(ageList); // 输出结果为 [20, 18, 25] ``` 上述代码中,我们遍历 User 对象的 List 集合,将每个 User 对象的年龄属性添加到一个的 List<Integer> 集合中。最后通过打印输出的方式来展示转换结果。 上述示例代码中,我们使用 User 对象作为示例,你可以将其替换成你自己的对象,并使用对应的属性方法名来实现相应的转换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值