-1

重複の可能性:
並べ替えられた ArrayList が表示されない?

コード:

  String title1 = "Original Order\n\n";
  String title2 = "Sorted Order\n\n";

  String collection = "";
  for (int i = 0; i < cdcollection.size(); i++)  {
  collection = collection + cdcollection.get(i);
  }
  mainTextArea.setText(title1 + collection);


  Collections.sort(cdcollection);

  String temp = "";
  for (int j = 0; j < cdcollection.size(); j++)  {
  temp += cdcollection.get(j);
  }
  mainTextArea.setText(title2 + temp);
4

2 に答える 2

1

displayButtonActionPerformedメソッドのコードを次のように置き換えます。

  mainTextArea.append("Original Order\n\n");

  for (String s:cdcollection)  {
        mainTextArea.append(s);
        mainTextArea.append("\n");
  }
  List<String> copy = new ArrayList<String>(cdcollection);
  Collections.sort(copy);

  mainTextArea.append("Sorted Order\n\n");
  for (String s:copy)  {
        mainTextArea.append(s);
        mainTextArea.append("\n");
  }

2回目の反復では、「cdcollection」ではなく「collection」を反復処理します。

setText()を呼び出すと、テキストエリアのテキスト全体が置き換えられます。append()代わりに使用してください。

于 2012-05-21T21:33:24.973 に答える
1

スイングコードなしでコードを取得しましたが、リストは適切に並べ替えられています。以下のコードを参照してください

public static void main(String[] args){
    ArrayList<String> cdcollection = new ArrayList();
    Collections.addAll(cdcollection, "renier\n", "mert\n", "rain\n",
            "mylen", "dreb\n");

    String title1 = "Original Order\n\n";
    String title2 = "Sorted Order\n\n";

    String collection = "";
    for (int i = 0; i < cdcollection.size(); i++) {
        collection = collection + cdcollection.get(i);
    }
    System.out.println(title1 + collection);

    Collections.sort(cdcollection);
    System.out.println(cdcollection);
}

ここで使用したforループ

 for (int j = 0; j < cdcollection.size(); j++)  {
      mainTextArea.setText(title2 + collection.get(j));
 }

ループ内にを追加しないtitle2でください。ループ内でsetTextを呼び出すと、古いテキストが上書きされます。リストのすべての文字列を一時文字列との最後のセットに追加しますmainTextArea。何かのようなもの

 String temp = "";
 for (int j = 0; j < cdcollection.size(); j++)  {
      temp += cdcollection.get(j));
 }
 mainTextArea.setText(title2 + temp);

しかし、これはアレクサンダーが述べたように間違いなく複製です。同じ質問を編集することもできます。

于 2012-05-21T21:36:30.293 に答える