当前位置: 首页 > 知识库问答 >
问题:

使用流api循环字段而不是对象

吕越彬
2023-03-14

我想使用Java8的流api进行以下练习:

  • 给定列表 person
  • Person是一个简单的POJO,具有name(string)和age(int)属性
  • 构造以下字符串names=[joe,diana,Thomas]&ages=[34,52,19]
String result = persons.stream()
    .map(p -> "(" + p.getName() + "," + p.getAge() + ")")
    .collectors(Collectors.joining("&","persons=[","]");

共有1个答案

穆宏胜
2023-03-14

我想如果有一个类person(正如您所描述的那样),您将需要一个自定义收集器:

 String result = List.of(new Person(1, "david"), new Person(33, "eugene"))
            .stream()
            .parallel()
            .collect(Collector.of(
                    () -> new StringJoiner[]{new StringJoiner(",", "[", "]"), new StringJoiner(",", "[", "]")},
                    (sj, per) -> {
                        sj[0] = sj[0].add("" + per.getAge());
                        sj[1] = sj[1].add(per.getName());
                    },
                    (left, right) -> {
                        left[0] = left[0].merge(right[0]);
                        left[1] = left[1].merge(right[1]);
                        return left;
                    },

                    x -> "Names = " + x[1].toString() + "&Ages = " + x[0].toString()
            ));
 类似资料:
  • 问题内容: 我也在学习Java和android。我们可以在while循环中执行的几乎所有事情都可以在while循环中执行。 我发现一个简单的条件,使用while循环比for循环更好 如果我必须在程序中使用counter的值,那么我认为while循环要比for循环好 使用while循环 在这种情况下,我发现while循环要比for循环好,因为如果要在for循环中实现相同的效果,则必须将counter

  • 我对Java编码非常陌生,我已经研究这个问题大约4天了。我正在做一个选择你自己的结局故事。当我到达第69行时,如果读者选择是,我希望系统重新开始故事,如果他们选择否,则结束程序。我不确定我是否正确地编码了while循环,或者我甚至可以使用中断;操作员就像我在使用它一样。对不起,我的代码太难看了,哈哈,我正在努力变得更好。感谢您的建议! }

  • 问题内容: 通常我们这样编码: 但是也可以按照以下方式做一些事情: 我想要这样做的真正原因是因为我想使用python-progressbar的自动检测maxval。他们喜欢 问题答案: 您可以与callable一起使用。(您应该传递两个参数,一个用于可调用对象,另一个用于前哨值) 注意 当没有剩余元素并且没有放置哨兵值时,它将阻塞。另外,就像-循环,并且与普通的容器循环不同,它将从队列中删除项目。

  • 所以基本上我有一个公共的静态空main方法,它创建一个框架和一个级别,级别是一个面板,然后添加到jframe中,但在代码之后似乎不会检查我在main中的time循环,我知道它没有,因为只要框架是可见的,我的time循环就应该被检查,如果它到达这一点而它没有,它应该在控制台窗口中打印一行。任何帮助都将不胜感激!同样是的,我知道打印行会弹出一个控制台窗口窗口,而不是实际上把它放在框架中,我为此而声明了

  • 问题内容: 我正在使用ColdFusion 8和SQL Server 2008 R2。 我试图查询一列值以获取具有范围内的值的行。该列应为数字,但不是。它被设置为varchar(由其他人)。有100,000多行数据。这是数据的伪样本: 我的查询如下所示: 该查询不会运行,因为where语句的列是varchar,并且出现转换错误,因此我必须将where语句更改为此: 现在,当我运行这样的查询时,它会

  • 我正在制作一个应用程序,其中包括一个用户信息管理部分。用户需要填写10个基本字段进行注册(名字、姓氏、地址等),但管理员也可以定义将包含在注册表中的自定义字段。目前,我用EAV实现了它。我有一个表“users”,其中包含所有10个基本字段作为列,users\u自定义字段(field\u id,field\u name,field\u type),其中包含所有自定义添加的字段,还有一个表“users