注意それはJava 8のStringJoiner
に似たユーティリティクラスにあります。同じAPIを持つクラスを使用すると、Java 7互換コードを作成することができます。このコードは、Java 8対応版を使用するためにまだ適応しやすいものです。
String s = stringList.toString();
System.out.append("items: ").append(s, 1, s.length()-1).println();
これ単に文字列の[
と]
を印刷しない:
しかし、それはあなたが実際的なアプローチを使用することができ、これは、したがって、あなたのアプリケーションの最もパフォーマンスの重要な部分であることを、むしろそうですコンマで区切られたリストになります。この文字列表現は必須ではありませんが、この規約に準拠していない便利なコレクション実装の例を見つけるのは難しいでしょう。
「コマンドパターン」のようなものを参照して更新された質問については、質問のストリームコードで何もする必要はありませんが、上記のコードで使用されているような抽象概念が既にあります。
あなたは、例えば、ある程度の柔軟性を提供しています
static <A extends Appendable> A join(A target, CharSequence sep, List<?> data) {
try {
CharSequence currSep = "";
for(Object item: data) {
target.append(currSep).append(item.toString());
currSep = sep;
}
return target;
} catch(IOException ex) {
throw new IllegalStateException(ex);
}
}
のようなメソッドを作成することができますあなたが取得するためにそれを使用することができますString
:
String s = join(new StringBuilder(), ", ", stringList).toString();
System.out.println("items: " + s);
か、単に印刷:
join(System.out.append("items: "), ", ", stringList).println();
のStringBuilder .... –
それとも単にJDK 8 [StringJoiner]のソースコードを見てみましょう(HTTP ://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/StringJoiner.java)クラスを作成し、そのJDK 7バージョンを作成してください –
コードはほぼ正常です。私が行う唯一の変更は、不要な文字列の生成を避けるために、 'System.out.print''と' joiner'と 'item'を別々にすることです。 'StringBuilder'は単に文字をバッファリングするだけで、文字列を作成したり、文字の別のバッファに書き込んだりするので効率的ではありません。代わりに、その最終バッファに直接書き込んでください(すでに行っているように)。 –