2017-08-06 17 views
-2

すべてのarraylist値を一度に連結して印刷する必要があります。配列リストの文字列値を連結する方法

ArrayList<String> lst = new ArrayList<String>(); 
lst.add("hi"); 
lst.add("hello"); 
Iterator<String> itr = lst.iterator(); 
String result = null; 

while(itr.hasNext()) { 
    Object element = itr.next(); 
    result = element + " "; 
} 

System.out.println(result); 

期待される結果がhi hello次のようになります。

は、ここに私のコードです。

現在の出力はhelloです(末尾にのもあります)。

+1

受信したエラーメッセージを投稿してください。また、入力されているものと出力がどのように表示されるべきかのプレゼンテーション可能なバージョンを投稿してください。この状態では、疑問がやや不明です。 – RHP

+0

javadocの 'String'を見て、これを簡単にする方法があるかどうかを確認してください。 – ajb

+0

現在、レコードの 'hello [whitespace]'を出力しています。 – Zabuza

答えて

1

ArrayList具体的なタイプにListインタフェースを好むしてください:

StringJoiner sj = new StringJoiner(" "); 
while(itr.hasNext()) { 
    Object element = itr.next(); 
    sj.add(element); 
} 
String result = sj.toString(); 

はまた、それのさらに短いバージョンがあるのJava 8 以降があることに注意してください。あなたは、Java 8+を使用していると仮定すると、あなたは要求されたよう

hi hello 

を出力

List<String> lst = Arrays.asList("hi", "hello"); 
String r = lst.stream().collect(Collectors.joining(" ")); 
System.out.println(r); 

ようStreamCollectors.joining(およびArrays.asList)を使用する場合があります。

1

コードのエラーはかなり小さいです。各反復で、result変数に値を割り当てます。しかしの代わりにあなたの既存のコンテンツを更新するだけで、それを消去して新しい値を入力します。

あなたはresult = element + " "です。しかし、それは要するにresult = result + element + " "ようなものか、同じである必要があります:この方法で

result += element + " "; 

最初の反復は、それにhiを保存し、その後hellohi helloその結果(代わりの最初の内容を上書きを追加取得します繰り返し)。

最後に空白が追加されていることに注意してください。 result = result.substring(0, result.length() - 1)で削除できます。または、最後の反復で追加しないでください。反復を数える必要があります。


Javaは空白のような区切り文字を使用して一緒にしても、いくつかの要素を結合し、正確に何をしたいんクラスStringJoinerを持っていることに注意してください。あなたはこのようにそれを使用します。

String result = String.join(" ", list); 
関連する問題