亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可變還原為 StringBuilder 對象

可變還原為 StringBuilder 對象

慕俠2389804 2024-01-05 15:14:43
根據Java Stream Package Summary,可變歸約操作在處理流中的元素時將輸入元素累積到可變結果容器中,例如 Collection 或StringBuilder 。有許多示例可以將可變歸約執行到集合中。但是,我無法弄清楚如何在 StringBuilder 中實現可變歸約操作,特別是考慮到 StringBuilder 似乎不屬于任何相關接口定義的一部分。
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您看不到StringBuilder,因為使用 a 的結果StringBuilder是 a?String。這StringBuilder是在幕后使用的。

例子

String[] input = { "Hell", "oW", "orld" };

String joined = Stream.of(input).collect(Collectors.joining());

System.out.println(joined); // prints: HelloWorld

如果你在沒有流媒體的情況下執行此操作,你會這樣做:


StringBuilder buf = new StringBuilder();

for (String s : input)

? ? buf.append(s);

String joined = buf.toString();

這也是流正在做的事情。如果你查看源碼joining(),你會發現:


public static Collector<CharSequence, ?, String> joining() {

? ? return new CollectorImpl<CharSequence, StringBuilder, String>(

? ? ? ? ? ? StringBuilder::new, StringBuilder::append,

? ? ? ? ? ? (r1, r2) -> { r1.append(r2); return r1; },

? ? ? ? ? ? StringBuilder::toString, CH_NOID);

}

正如您所看到的,它還使用new StringBuilder()append(CharSequence s)toString()。

另外兩個重載joining(CharSequence delimiter)joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix),使用StringJoiner而不是StringBuilder。

String[] input = { "Hell", "oW", "orld" };

String joined = Stream.of(input).collect(Collectors.joining());

System.out.println(joined); // prints: HelloWorld

如果你在沒有流媒體的情況下執行此操作,你會這樣做:


StringBuilder buf = new StringBuilder();

for (String s : input)

? ? buf.append(s);

String joined = buf.toString();

這也是流正在做的事情。如果你查看源碼joining(),你會發現:


public static Collector<CharSequence, ?, String> joining() {

? ? return new CollectorImpl<CharSequence, StringBuilder, String>(

? ? ? ? ? ? StringBuilder::new, StringBuilder::append,

? ? ? ? ? ? (r1, r2) -> { r1.append(r2); return r1; },

? ? ? ? ? ? StringBuilder::toString, CH_NOID);

}


查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號