Vishwaラトナ:
私はの内容を印刷しようとしたList<String>
「と、それらの間に」。VenkatさんSubramaniamによりJavaで本関数型プログラミングを踏襲し、ページ上で54、彼は私がやっている正確に何をやったが、私の印刷結果は、コンマなしで1つの文字列として来ています(,)
。
String[][] deepArrayStr = new String[][]{{"Alex", "nullpointer"}, {"Eran", "George"}};
List<String> str= Arrays.stream(deepArrayStr)
.flatMap(Arrays::stream)
.collect(Collectors.toList());
for(String s:str){
System.out.print(String.join(",",s));
}
出力:AlexnullpointerEranGeorge
予想:Alex,nullpointer,Eran,George
本の中でVenkatさんも私がやっていることと同じことをしたのに対し、私は上記のアプローチで間違ってやっていることは何がある私は知りたいと思った、私は別の方法を試してみましたが、それが正常に動作しますか?
System.out.println(Arrays.stream(deepArrayStr)
.flatMap(Arrays::stream)
.collect(Collectors.joining(",")));
出力:Alex,nullpointer,Eran,George
予想:Alex,nullpointer,Eran,George
私の質問はから変換することではないList
のstring
が、印刷中に区切り文字を追加します。
ジョンスキート:
あなたは、リストを反復処理し、呼び出しているString.join
単一のエントリたびに。これは、区切り文字を使用するつもりはありませんです。
これを明確にするために、これらの2つの例を考えてみます。
String x1 = String.join(",", "a");
String x2 = String.join(",", "a", "b");
その後の値がx1
「A」になり、の値がx2
「B」になります。String.join
唯一の区切り文字追加の間でアイテムを-あなたは、単一のアイテムを渡すそうならば、それは、任意の区切り文字を追加する必要はありません。
あなたは自分の削除することができますfor
ループを、とに置き換えます。
System.out.println(String.join(",", str));