使用stream流对list进行操作

本文介绍了如何使用Java Stream流对list进行高效操作,包括根据指定条件过滤元素、按照特定顺序排序以及根据映射关系选择字段。首先,通过filter方法从list中筛选出满足条件的map数据;接着,利用sorted方法结合外部idList对结果进行排序;最后,依据columnMap的'dataitem'值选取map中的特定字段。

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

使用stream流对list进行filter,sorted操作。
使用到的list如下:

list:
[
    {
        "id":"hl",
        "aa":"xx",
        "bb":"",
        "cc":""
    },
    {
        "id":"hm",
        "aa":"xx1",
        "bb":"",
        "cc":""
    },
    {
        "id":"dh",
        "aa":"x2",
        "bb":"",
        "cc":""
    }
]

aaList:["xx","x2"]

第一个目标: 在list中过滤掉aaList不存在的map数据,aaList中的数据对应list中的’aa’字段。使用stream流的filter属性:

list.stream()
  .filter(i -> aaList.contains(i.get("aa")))
  .collect(Collectors.toList())
结果如下:
list:
[
    {
        "id":"hl",
        "aa":"xx",
        "bb":"",
        "cc":""
    },
    {
        "id":"dh",
        "aa":"x2",
        "bb":"",
        "cc":""
    }
]

第二个目标: list按照idList顺序进行排序,idList中的数据对应list中的’id’字段。使用stream流的sorted属性:(此时的list为第一个目标的结果list)

idList:["dh","hl"]
list.stream()
	.sorted(Comparator.comparing(m -> idList.indexOf(m.get("id"))))
	.collect(Collectors.toList())
结果如下:
[
    {
        "id":"dh",
        "aa":"x2",
        "bb":"",
        "cc":""
    }{
        "id":"hl",
        "aa":"xx",
        "bb":"",
        "cc":""
    }
]

第三个目标:list中的map只取与columnMap中‘dataitem’值的相同的字段,columnMap中‘dataitem’属性值value对应list的key。
(此时的list为第二个目标的结果list)实现如下:

columnMap
[
    {
        "id":"",
        "dataitem":"aa"
    },
    {
         "id":"",
        "dataitem":"bb"
    }
]
list.stream()
  .map(s -> {
    Map<String, String> v = new HashMap<>();
    columnMap.forEach(col -> v.put(col.get("dataitem"), s.get(col.get("dataitem"))));
    return v;
  })
  .collect(Collectors.toList())
结果如下:
[
    {
        "aa":"x2",
        "bb":""
    }{
        "aa":"xx",
        "bb":""
    }
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值