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

使用Java 8将对象列表转换为从toString()方法获得的字符串

荆鸿畅
2023-03-14

《Java 8》中有很多有用的新东西。例如,我可以在对象列表上使用流进行迭代,然后将object实例的特定字段的值求和。例如。

public class AClass {
  private int value;
  public int getValue() { return value; }
}

Integer sum = list.stream().mapToInt(AClass::getValue).sum();

因此,我想知道是否有任何方法可以构建一个String,将来自实例的toString()方法的输出串联在一行中。

List<Integer> list = ...

String concatenated = list.stream().... //concatenate here with toString() method from java.lang.Integer class

假设列表包含整数123,我希望级联的“123”“1,2,3”

共有1个答案

单嘉泽
2023-03-14

一种简单的方法是在StringBuilder中追加列表项

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

StringBuilder b = new StringBuilder();
list.forEach(b::append);

System.out.println(b);

您也可以尝试:

String s = list.stream().map(e -> e.toString()).reduce("", String::concat);

说明:映射将整数流转换为字符串流,然后将其还原为所有元素的级联。

注意:这是normal reduction,在O(n2)中执行

为了获得更好的性能,使用StringBuilderMutable Reduction类似于F.Böller的答案。

String s = list.stream().map(Object::toString).collect(Collectors.joining(","));

ref:流减少

 类似资料:
  • 我最近开始处理Java流。我试图从我的一个SQL查询的结果集中获取字符串值。结果集只从数据库中选择一个字符串/Varchar列。 所以我做了: 或: 我相信地图具有将数据从一种类型转换为另一种类型的功能。在本例中,从对象到字符串,然后在字符串列表中收集它们。 但上面的代码显示了编译时错误:无法从对象转换为字符串列表。 请给我建议正确的做法,并说明我的理解有什么问题。

  • 问题内容: 我想使用Java 8技巧在一行中执行以下操作。 给定此对象定义: 和a ,我想得到a ,它是第一个列表中所有s对象的列表- 顺序相同。 我可以使用Java中的循环来做到这一点,但我相信Java8中应该有一个单行lambda可以做到这一点。我无法在线找到解决方案。也许我没有使用正确的搜索词。 有人可以为这种转换建议一个lambda或另一种线吗? 问题答案: 这应该可以解决问题: 也就是说

  • 我可以在Java中使用循环来实现这一点,但我认为在Java8中应该有一个一行程序lambda来实现这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。 有人能为这个转换提出一个lambda或另一个一行程序吗?

  • 我在编写从JSON字符串到对象列表的转换代码时遇到了Kotlin的问题。 类型不匹配。必需:键入!找到:()→单位 那么有没有解决办法让它为科特林工作呢?

  • 问题内容: 我想将json字符串转换为对象列表。请帮我。如果由来完成,那会更有帮助。 我试过了,但是没有用。我不想要该json的所有值。MatrixModel中提到的 这是一个对象 这是Json String 问题答案: 您可以使用json2csharp.com将json转换为对象模型 将您的JSON粘贴到Box中。 单击“生成”。 您将为您的对象模型获得C#代码 通过使用 NewtonJson*

  • 问题内容: 我有一个代表列表的字符串: 我想把那些乱七八糟的字符串变成一个实际的清单。我想可以将数字进行正则表达式并循环到(),但是有没有更简单的方法?不知道如何将其设置为正则表达式。 问题答案: 使用ast.literal_eval。