2012-02-01 12 views
0

arraylistの値を画面にどのように戻すことができますか? System.out.printlnアレイリストの内容を出力する

私はforループを考えていました。

for (String s : list) 
{ 
    System.out.println(s); 
} 

しかし、オブジェクトを文字列に変換できないと訴えています。文字列に変換するにはどうすればいいですか?

コード:

public static void GetStatsProc(String operation) 
{ 
    try { 
     Process p=Runtime.getRuntime().exec(operation); 
     p.waitFor(); 
     BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
     String line=reader.readLine(); 
     while(line!=null) 
     { 
      // Add all lines into an array 
      ArrayList list = new ArrayList(); 
      list.add(line); 
      System.out.println(line); 
      line=reader.readLine(); 
     } 

    } 
    catch(IOException e1) {} 
    catch(InterruptedException e2) {} 
} 
+3

汎用の「ArrayList」(つまり、「ArrayList 」)を使用する必要があります。 – Bernard

+1

whileループの各繰り返しで新しいリストを宣言していると指摘した人はいません。 – Sign

+0

あなたのサンプルコードにforeachループが含まれていないのはなぜですか?どこに置いておきたいですか? – Jim

答えて

6

あなたの問題は、ループのために、そしてあなたのリストには、ループの

ArrayList<String> list = new ArrayList<String>(); 

と宣言しなければならないで印刷している場合

のように見える必要があります
for (String s : list) 
{ 
    System.out.println(s); 
} 
3

コードを使用してください:

System.out.println(list); 

あなたのリストを印刷します。

+0

これは、ArrayListがオーバーライドされたtoString()(実際にはAbstractCollectionでダウンしているため)だけで動作するため、デバッグを除いて、しばしばあなたが望むものになることはありません。 – Jim

+0

しかし、OPのコードのような単純な 'List 'であれば、それはうまく印刷されます。 – anubhava

+0

この質問はコレクションやジェネリックについて学習している初心者のJavaプログラマなので、私のコメントは後世のものであり、本当にあなたを目指すものではありません。他の初心者がこれを読んでいるかもしれません。私はちょうど警告を利用できるようにしたかったのです。 – Jim

1

私はあなたの欠けていると思います:あなたのコードでは、(String s:list)でなければなりません。文字列のリストがある限り、あなたは参照できます。

1

すべてのオブジェクトにはtoString()メソッドがありますが、デフォルトの実装では良好な結果が得られない場合があります。あなたのケースでは、しかし、あなたは文字列のリストを扱っているので、すでに提案されている他のものと同じようにArrayList<String>を使うべきです。

あなたがエントリをループにしたいと(改行などのような)独自のフォーマットを提供する場合には、これを試してみてください。

for (Object o : list) 
{ 
    System.out.println(o); 
} 

これはo場合o.toString()を呼び出すか"null"を返しますどのString.valueOf(o)を内部的に呼び出します。 nullです。

関連する問題