java集合用stream流转Map的两种常见转化方式

java集合用stream流转Map的两种常见转化情况

基本类对象

@Data
public class BusinessRuleTemplateTaskDTO {
    private Long id;//主键,唯一性
    private Long basicTaskId;//子表主键,存在多值
}

第一种转化情况(key-类对象):

List<BusinessRuleTemplateTaskDTO> waitHandledList=new ArrayList<>();//我先以空集合表示,此处应为真正需要处理的集合本身
Map<Long, BusinessRuleTemplateTaskDTO > map= waitHandledList.stream().collect(Collectors.toMap(BusinessRuleTemplateTaskDTO ::getId, o -> o));

第二种转化情况(key-集合对象):

List<BusinessRuleTemplateTaskDTO> waitHandledList=new ArrayList<>();//我先以空集合表示,此处应为真正需要处理的集合本身
    Map<Long, List<BusinessRuleTemplateTaskDTO>> map = waitHandledList.stream().collect(Collectors.groupingBy(BusinessRuleTemplateTaskDTO::basicTaskId));
        for (Map.Entry<Long, List<BusinessRuleTemplateTaskDTO>> entry : map.entrySet()) {
        List<BusinessRuleTemplateTaskDTO> list = entry.getValue();
        }
       
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中利用Stream流将List类型数据换成Map类型的几种方法有toMap()、groupingBy()、partitioningBy()等方法。其中,toMap()方法可以将List换成Map,groupingBy()方法可以将List按照某个属性分组,partitioningBy()方法可以将List按照某个条件分成两组。 以下是几种常见的ListMap的方法: 1. toMap()方法将List换成Map,其中Lambda表达式中的第一个参数为List中的元素,第二个参数为Map中的key,第三个参数为Map中的value。 ```java List<String> list = Arrays.asList("apple", "banana", "orange"); Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length)); System.out.println(map); // 输出:{apple=5, banana=6, orange=6} ``` 2. groupingBy()方法将List按照某个属性分组,其中Lambda表达式中的参数为List中的元素,返回值为Map中的key。 ```java class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } List<Person> list = Arrays.asList(new Person("Tom", 20), new Person("Jerry", 21), new Person("Lucy", 20)); Map<Integer, List<Person>> map = list.stream().collect(Collectors.groupingBy(Person::getAge)); System.out.println(map); // 输出:{20=[Person{name='Tom', age=20}, Person{name='Lucy', age=20}], 21=[Person{name='Jerry', age=21}]} ``` 3. partitioningBy()方法将List按照某个条件分成两组,其中Lambda表达式中的参数为List中的元素,返回值为boolean类型。 ```java List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Map<Boolean, List<Integer>> map = list.stream().collect(Collectors.partitioningBy(i -> i % 2 == 0)); System.out.println(map); // 输出:{false=[1, 3, 5], true=[2, 4]} ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值