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/