为了账号安全,请及时绑定邮箱和手机立即绑定

循环遍历具有相同属性的项目(catalog_id)

循环遍历具有相同属性的项目(catalog_id)

慕尼黑的夜晚无繁华 2021-06-07 16:47:32
我有一个Catalog具有以下属性的bean:catalog_idcatalog_namecatalog_pricecatalog_titlecatalog_id不是唯一的,可以有多个Catalog具有相同id.有一个Catalog对象列表,我想收集所有相同的对象,id并且在第二个 for 循环中我想遍历 that 的出现次数id。让我们说:catalogList2.stream()        .collect(Collectors.groupingBy(Catalog::getId, Collectors.counting()))        .entrySet()        .stream()        .map(p->"catalog id--->"+p.getKey()+"    -"+p.getValue()).forEach(System.out::println);从上面的代码我能够得到以下输出:catalog id--->17553    -- 8catalog id--->545    -- 8catalog id--->546    -- 6catalog id--->40962    -- 16catalog id--->901    -- 12但是,在那之后我想做如下:(它只是我想要实现的结构)for(Catalog cat1:p.getKey()){    for(int i=0;i<p.getValue();i++){        System.out.println("Name -->"+cat1.get(i)));        //Something i will do here.    }}我不确定如何实现这种结构。
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

在groupingBy没有下游收集器的情况下使用会将 ID 映射到具有这些 ID 的目录列表。然后,您可以询问列表的大小以获取计数并遍历列表以获取每个目录:


catalogList2.stream()

    .collect(Collectors.groupingBy(Catalog::getId))

    .forEach((id, catalogs) -> {

        System.out.println("Catalog id : " + id + " : " + catalogs.size());

        catalogs.forEach(System.out::println);

    });


查看完整回答
反对 回复 2021-06-10
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

你可以这样做:


catalogList

.stream()

.collect(Collectors.groupingBy(Catalog::getId))

.forEach((key,value)->{

    for(Catalog curValue:value)

        System.out.println("Name -->"+curValue.catalog_name);

    });

输出:


Name -->Catalog 2

Name -->Catalog 3

Name -->Catalog 4

Name -->Catalog 1

Name -->Catalog 7

Name -->Catalog 8

Name -->Catalog 9

Name -->Catalog 15

Name -->Catalog 16

Name -->Catalog 18

Name -->Catalog 19

Name -->Catalog 20


查看完整回答
反对 回复 2021-06-10
  • 2 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信