• 我想要实现的目标是:

我想转换一个StringBuilder+forloop,如下所示:

public String question(List<MyPojo> myPojos) {
    final StringBuilder stringBuilder = new StringBuilder();
    for (MyPojo myPojo : myPojos) {
        try {
            String json = objectMapper.writeValueAsString(myPojo);
            stringBuilder.append(json).append("\n");
        } catch (JsonProcessingException e) {
                LOGGER.warn("bad");
        }
    }
    return stringBuilder.toString();
}

转换为stream() struct .这不是为了性能、可读性或任何东西,我只是想try 转换.

  • 我做了什么try :
public String question(List<MyPojo> myPojos) {
    var stringBuilder = new StringBuilder();
    return myPojos.stream().map(onePojo -> delegate(onePojo, stringBuilder)).toString();
}

public StringBuilder delegate(MyPojo oneMyPojo, StringBuilder stringBuilder) {
    try {
        var json = objectMapper.writeValueAsString(oneMyPojo);
         stringBuilder.append(json).append("\n");
        } catch (JsonProcessingException e) {
                LOGGER.warn("bad");
    }
    return stringBuilder;
}
  • 发行

遗憾的是,结果字符串与for循环提供的字符串完全不同.

  • 问题

我的代码中遗漏了什么?

推荐答案

在你的例子中,你根本不需要StringBuilder,你可以简单地使用.collect(Collectors.joining("\n"))来连接你的字符串,你可以像这样:

public String question(List<MyPojo> myPojos) {
    return myPojos.stream()
        .map(this::convertToJson) // Convert the object to json string
        .filter(json -> json != null && !json.isEmpty()) // retrieve non null or empty jsons
        .collect(Collectors.joining("\n")); // combine the result with backline separator
}

private String convertToJson(MyPojo myPojo) {
    try {
        return objectMapper.writeValueAsString(myPojo);
    } catch (JsonProcessingException e) {
        LOGGER.warn("bad");
        return "";
    }
}

Java相关问答推荐

基于仅存在于父级中的字段查询子文档?

是否需要关闭Executors返回的执行器.newVirtualThreadPerTaskExecutor()?

我想了解Java中的模块化.编译我的应用程序时,我有一个ResolutionException

将数组整体转换为链接表

无法在WebSocket onMessage中捕获错误

测试容器无法加载类路径初始化脚本

测试何时使用Mockito强制转换对象会导致ClassCastException

在JDK 1.8源代码中,为什么使用A-B 0来确定哪个更大,而不是A B?

有效的公式或值列表必须少于或等于255个字符

允许同时执行两个方法,但不能同时执行这两个方法

Java页面筛选器问题

当构造函数创建一个新实例时,Java为什么需要&new";

泛型与泛型问题的完美解决方案?

为什么相同的数据条码在视觉上看起来不同?

Android无法在Java代码中调用Kotlin代码,原因是在Companion中使用Kotlin枚举时

JPA无手术同品种器械可能吗?

活泼的一次判断成语,结果中等

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

Java泛型方法重载

如何在Java上为循环数组从synchronized迁移到ReentrantLock