gpt4 book ai didi

java - 使用 Java 8 Streams 为 ArrayList 输入重写 StringJoiner

转载 作者:行者123 更新时间:2023-12-01 07:52:14 25 4
gpt4 key购买 nike

我如何使用 Java 8 流重写它?我还不太熟悉 Java 8 功能。

private final ArrayList<Double> ledger = new ArrayList<>();

/**
*
* @return the ledger as a String (e.g. "1.20|2.50|1.90")
*/
public String getLedgerString() {
StringJoiner sj = new StringJoiner("|","[","]");
for (double d : ledger)
sj.add(String.format("%.2f", d));
return sj.toString();
}

最佳答案

当您的所有信息已自包含在可流式传输列表中时,直接使用字符串连接器并不有效,因为您可以直接流式传输并使用 Collectors.joining 创建字符串。 .

这可以像这样使用:

ledger.stream()
.map(d->String.format("%.2f", d))
.collect(
Collectors.joining("|","[","]")
);

该方法的 3 个参数与您期望的 StringJoiner 相同。

上面的代码使用.stream()循环遍历List,然后.map()将它们转换为字符串,最后收集它们使用Collectors.joining

Yuri Schimke还建议了另一种方法,您也可以使用DecimalFormat来格式化数字。这可以通过以下方式完成:

ledger.stream()
.map(new DecimalFormat("0.00")::format)
.collect(
Collectors.joining("|","[","]")
);

它使代码稍微长一些,但优点是您可以轻松地将小数点分隔符更改为其他内容。

关于java - 使用 Java 8 Streams 为 ArrayList<Double> 输入重写 StringJoiner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com