Map List 操作 stream流 排序

map 通过 key值排序 正序 从小到大  并将Value 添加到一个新的List

通过value值排序 须将

comparingByKey()  更改为  comparingByValue()
orederNap 表示 要处理的Map
List<Object> alist = new LinkedList<>();
        orderMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(e->alist.add(e.getValue()));

 倒序 从大到小  reversed()

通过value值排序 须将

comparingByKey()  更改为  comparingByValue()
orderMap.entrySet().stream().sorted((Comparator<? super Map.Entry<Integer, Object>>) Map.Entry.comparingByKey().reversed()).forEachOrdered(e->alist.add(e.getValue()));

stream流 一对多时 将某个字段 根据某个字段进行合并

如:一个List中 有

[TeacherRole(id=null, examId=1, teacherId=1, roleId=2, subjectId=0), TeacherRole(id=null, examId=1, teacherId=1, roleId=3, subjectId=0)]

但是 我们需要 让相同的teacherId 拥有一个完整的roleId  如 roleId=2,3

Collectors.toMap() 三个重载方法

keyMapper:Key 的映射函数
valueMapper:Value 的映射函数
mergeFunction:当 Key 冲突时,调用的合并方法
mapSupplier:Map 构造器,在需要返回特定的 Map 时使用
toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper);
toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper,
        BinaryOperator<U> mergeFunction);
toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper,
        BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier);

具体实现

List<TeacherRole> collect = teacherRoles.stream()
                // 表示id为key, 接着如果有重复的,那么从 实体对象o1与o2中筛选出一个,这里选择o1,
                // 并把id重复,需要将nums和sums与o1进行合并的o2, 赋值给o1,最后返回o1
                .collect(Collectors.toMap(TeacherRole::getTeacherId, a -> a, (o1, o2) -> {
                    o1.setRoleId(o1.getRoleId() + o2.getRoleId());
                    return o1;
                })).values().stream().collect(Collectors.toList());

//未完   待续

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值