对象的Arraylist - 如何删除条目?

时间:2014-06-01 18:59:27

标签: java swing object arraylist

我正在做作业,它说我必须能够从对象的arraylist中删除一个条目。

我尝试检查它是否包含我要删除的用户ID,但对象不能包含字符串

 public class EmployeeProgramView extends FrameView {
 ArrayList <information> database = new ArrayList <information>();


private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
    System.exit(0);
}                                          

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    information a;
    String ID, firstName, lastName, startDate, annualSalary, linedUp;
    ID = idInput.getText();
    firstName = firstNameInput.getText();
    lastName = lastNameInput.getText();
    startDate = startInput.getText();
    annualSalary = salaryInput.getText();
    linedUp = (firstName+" "+lastName+" "+annualSalary+" "+startDate);

    a = new information (ID, firstName, lastName, startDate,annualSalary);
    database.add(a);

    System.out.println(linedUp);
}                                         

private void listButtonActionPerformed(java.awt.event.ActionEvent evt) {
            String temp="";

    for (int x=0; x<=database.size()-1; x++) {
        temp = temp + database.get(x).ID + " "
                + database.get(x).first + " "
                + database.get(x).last + " "
                + database.get(x).start + " "
                + database.get(x).salary + "\n";
    }
    finalOutput.setText(temp);

}

private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
    String removeID;
    removeID = idInput.getText();


    if (database.contains(removeID)){
    database.remove(removeID);

    } else {
    finalOutput.setText("No such ID in database");
    }
}

class information{
String ID, first, last, start, salary;

    information(String _ID ,String _first, String _last, String _start, String _salary){
        ID = _ID;
        first = _first;
        last = _last;
        start = _start;
        salary = _salary;
    }
}

}

所以我的问题是?如何删除对象?

5 个答案:

答案 0 :(得分:1)

只要remove在比较该对象和我们要求删除的对象时返回true,.equals方法将从数组中删除对象。这对于相同的字符串是正确的;默认情况下,其他对象仅等于它们自己(仍然可以将对象添加到数组并保留引用它的另一个变量)。

您也可以随时删除by array index

答案 1 :(得分:0)

您可能只需要使用以下方法:List&lt; T> #remove,删除有问题的对象

答案 2 :(得分:0)

您必须遍历数组并找到您要查找的ID。只需将其添加到您的主类:

public void removeInformation(ArrayList<Information> database, String removeID) {
    for(int i = 0; i < database.size(); i++) {
        if(database.get(i).getID().equals(removeID)) {
            database.remove(database.get(i));
        }
    }
}

这与您的问题无关,但按照惯例,类以大写字母命名,因此您的“信息”类应标题为“信息”。

另外,我只是想说,如果您不知道,在键入类之前,您可以键入import语句。例如:

import java.awt.event.ActionListener;

这样,每次要使用该类时,都不必键入“java.awt.event.ActionListener actionListener”。

答案 3 :(得分:0)

知道了!

感谢大家的投入。真的让我的大脑以不同的方式思考哈哈。

    private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
    String temp, removeID;
    removeID = idInput.getText();

    for (int x = 0; x<=database.size()-1; x++){
           temp = database.get(x).ID;
           if(removeID.equals(temp)){
           database.remove(x);
        }
    }
}

答案 4 :(得分:-1)

基本上看,

如果列表包含id与removeid相同的信息,则需要从arraylist中删除对象信息。

所以在删除之前,您需要检查列表中的信息ID

所以去迭代列表并在每次迭代中查找信息并检查其id equlas to removeid

如果等于则执行list.remove(信息)

for (Information information: database) {
    // check for ID is same as remove id
   // if equals remove that entire object from list

    if (information.ID.equals(removeID)) {
        // remove object with ID same as removeid
        database.remove(information);
    }
}