import java.util.ArrayList;
import java.util.Collections;

public class U3A4_CDCollection extends javax.swing.JFrame {

    private ArrayList<String> strArray;

    public U3A4_CDCollection() {
        initComponents();

    private void btnInitializeActionPerformed(java.awt.event.ActionEvent evt) {
        btnAdd.setEnabled(true);
        btnRemove.setEnabled(true);

        strArray = new ArrayList();
        strArray.add("Calvin Harris - Overdrive(Part 2)");
        strArray.add("DVBBS & Borgeous - TSUNAMI");
        strArray.add("Martin Garrix - Tremor");
        strArray.add("Martin Garrix - Animals");
        strArray.add("Firebeatz - Max Ammo");

        Collections.sort(strArray);
        for(int i = 0; i < strArray.size(); i++){
            this.txtAreaOutput.append("\n" + strArray.get(i));
        }
        btnInitialize.setEnabled(false);
    }
    private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
        strArray.add(this.txtInputName.getText());
        System.out.println(strArray);

        Collections.sort(strArray);
        this.txtAreaOutput.append("\n" + strArray.get(strArray.size()-1));
    }

    private void btnRemoveActionPerformed(java.awt.event.ActionEvent evt) {
        strArray.remove(this.txtInputName.getText());
        String strBadSong = this.txtInputName.getText();
        for (int i = 0; i < strArray.size()-1; i++){
            if (strBadSong.equals(strArray.get(i))){
                strArray.remove(this.txtInputName.getText());
            }
        }
        Collections.sort(strArray);
        this.txtAreaOutput.setText(" ");
        for (int i = 0; i < strArray.size(); i++){
            this.txtAreaOutput.append("\n" + strArray.get(i));
        }
    }


我主要需要有关如何正确使用Collections.sort()方法的帮助。有什么我想念的东西或放在错误的地方吗?我曾尝试将其放置在不同的位置,但还没有弄清楚。任何帮助将非常感激!

最佳答案

您的问题是,当您从GUI输入新字符串并单击添加时,输出的顺序不正确?我认为这是由您的btnAddActionPerformed()中的逻辑错误引起的。
您正在执行此操作:

Get the new string from the textfield
Add the new string into ArrayList
Sort the List
Add the last String from the List to the output


但是,最后一个字符串不是新字符串。
我认为这是您应该做的:

Get the new string
Add the new string into the list
Sort this list
Clear the txtAreaOutput
Print the whole List into the textAreaOutput again.




 private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
        strArray.add(this.txtInputName.getText());
        System.out.println(strArray);
        Collections.sort(strArray);
        this.txtAreaOutput.setText("");
        for(int i = 0; i < strArray.size(); i++){
            this.txtAreaOutput.append("\n" + strArray.get(i));
        }
    }

关于java - 如何使用Collections.sort()使我的数组按字母顺序排序? -Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31553606/

10-17 02:42