-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");
  }

在您的第二次迭代中,您迭代“collection”而不是“cdcollection”。

调用 setText(),替换 textarea 的整个文本。改为使用append()

于 2012-05-21T21:33:24.973 回答
1

我拿了你的代码,没有使用 swing 代码,并且列表排序正确。请参阅下面的代码

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 回答