Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Arraylist of Objects-如何删除条目?_Java_Swing_Object_Arraylist - Fatal编程技术网

Java Arraylist of Objects-如何删除条目?

Java Arraylist of Objects-如何删除条目?,java,swing,object,arraylist,Java,Swing,Object,Arraylist,我正在做作业,它说明我必须能够从对象的arraylist中删除条目 我尝试检查它是否包含要删除的用户id,但对象不能包含字符串 public class EmployeeProgramView extends FrameView { ArrayList <information> database = new ArrayList <information>(); private void exitButtonActionPerformed(java.awt.eve

我正在做作业,它说明我必须能够从对象的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;
    }
}
public类EmployeeProgramView扩展了FrameView{
ArrayList数据库=新的ArrayList();
私有void exitButtonActionPerformed(java.awt.event.ActionEvent evt){
系统出口(0);
}                                          
私有void addButtonActionPerformed(java.awt.event.ActionEvent evt){
资料a;
字符串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=新信息(ID、姓氏、姓氏、起始日期、年度日历);
添加(a);
系统输出打印项次(linedUp);
}                                         
private void listButtonActionPerformed(java.awt.event.ActionEvent evt){
字符串temp=“”;

对于(int x=0;x您可能只需要使用方法:List#remove来删除有问题的对象

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

您也可以随时删除它。

基本上参见

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

因此,在删除之前,您需要检查列表中的信息id

所以,在迭代列表中查找每个迭代中的信息,并检查其id Equals以删除

如果等于,则执行列表。删除(信息)


您必须遍历数组并找到要查找的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));
        }
    }
}
这样,您就不必在每次使用该类时都键入“java.awt.event.ActionListener ActionListener”。

明白了

谢谢大家的意见。真的让我的大脑有了不同的想法哈哈

    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);
        }
    }
}
private void removeButtonActionPerformed(java.awt.event.ActionEvent evt){
字符串温度,删除;
removeID=idInput.getText();

对于(int x=0;xy)您的问题不清楚。您知道
List#remove
方法吗?为什么不能使用此方法?探索API阅读JavaDoc,这与user432的答案是相同的,如果
信息#equals()
没有通过测试
ID
s的相等性来实现。如果
equals()
是通过比较
ID
s来实现的,这重复了
remove()已经完成的工作
。首先看..这是我自己的回答观点..不是复制粘贴..第二个String类已经重写了equals方法以及information.id和removeid都是字符串,所以这里不需要任何额外的东西..你有什么疑问吗?我没有说这是复制粘贴,我只是说它与(现在已删除)的答案相同回答。然后看一下
ArrayList#remove(Object o)
。当您试图删除一个对象时,传递对象的
equals()
方法,因此您的答案不仅仅取决于
String#equals()
。此外,
ArrayList#remove(Object o)
已经遍历了
ArrayList
,所以您在这里做了额外的工作,这些工作可能会做,也可能不会做您想做的事情。我同意在删除任何集合的过程中都会考虑传递的对象相等性,不仅是列表..而且我编写的逻辑只是为了展示如何删除它..信息类应该有一个适当的imhashcode和equals方法的实现,以使其在集合中正确运行。.如果
信息
需要有
equals()和
hashcode()的特定实现< /代码>,在你的答案中这样说。如果它们有正确的实现,你所要做的就是创建一个新的<代码>信息< /代码>对象,并具有所需的特性,并移除它,不需要做额外的迭代工作。
比较的不仅仅是
ID
字段——此方法不再有效。更好的方法是按索引删除,或者使用迭代器的
remove()
method。可能需要小心--如果一行中有两个要删除的对象,则此方法将跳过第二个对象。请反向浏览列表以解决该问题。对于(int x=database.size()-1;x>=0;x--){
import java.awt.event.ActionListener;
    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);
        }
    }
}