我将如何使用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();
}
Run Code Online (Sandbox Code Playgroud)
如果您已将所有信息自包含在可流式列表中,则直接使用stringjoiner无效,因为您可以直接流式传输并创建一个字符串Collectors.joining
.
这可以像:
ledger.stream()
.map(d->String.format("%.2f", d))
.collect(
Collectors.joining("|","[","]")
);
Run Code Online (Sandbox Code Playgroud)
该方法的3个参数与您对a的预期相同StringJoiner
.
上面的代码使用.stream()
循环在List
随后.map()
他们字符串,然后最后用收集它们Collectors.joining
.
Yuri Schimke还提出了另一种方法,您也可以使用DecimalFormat
格式化数字.这可以通过以下方式完成:
ledger.stream()
.map(new DecimalFormat("0.00")::format)
.collect(
Collectors.joining("|","[","]")
);
Run Code Online (Sandbox Code Playgroud)
它使代码稍长,但具有的优点是您可以轻松地将小数分隔符更改为其他内容.
归档时间: |
|
查看次数: |
605 次 |
最近记录: |