首页 > 解决方案 > 使用对象字段值作为参数从 arrayList 中删除对象

问题描述

当我在输入字段中输入对象字段值时,我想从 ArrayList 中删除一个对象。

我有一个超类,其中包含我将添加的不同仪表的一般信息。

public class Meter
{
// instance variables - replace the example below with your own
public String regNum;
public String workOrNot;
public String location;


/**
 * Constructor for objects of class Clock
 */
public Meter(String regNum, String workOrNot, String location)
{
    // initialise instance variables
    setRegNum(regNum);
    setWorkOrNot(workOrNot);
    setLocation(location);
}

//REGISTRATION NUMBER
public void setRegNum(String regNum){
    this.regNum = regNum;
}

public String getRegNum(){
    return regNum;
}

//WORK OR NOT
public void setWorkOrNot(String workOrNot){
    this.workOrNot = workOrNot;
}

public String getWorkOrNot(){
    return workOrNot;
}

//LOCATION
public void setLocation(String location){
    this.location = location;
}

public String getLocation(){
    return location;
}
}

然后我有一个扩展超类并具有更多值的时钟类。

public class Clock extends Meter
{
// instance variables - replace the example below with your own
public double minTime;

/**
 * Constructor for objects of class Clock
 */
public Clock(String regNum, String workOrNot, String location, double 
minTime)
{
    // initialise instance variables
    super(regNum, workOrNot, location);
    setMinTime(minTime);

}

//MINNIMUM TIME
public void setMinTime(double minTime){
    this.minTime = minTime;
}

public double getMinTime(){
    return minTime;
}

//EQUALS METHOD --- NOT SURE WHAT IT SHOULD DO... YET!
public boolean equals (Clock other){
    return location.equals(other.location);
}

public String toString(){
    String retur = super.toString() + "regNum: " + regNum +
                                      "Does it work: " + workOrNot +
                                      "Location: " + location +
                                      "Min time value: " + minTime;
    return retur;
}
}

然后我有一个归档类,它创建一个包含不同对象的arrayList,并且当用户收到一个字段提示时,它也将有一个删除对象的方法,他们可以在其中输入“regNum”作为字符串。

然后计划是,它遍历列表并找到具有相同“regNum”的一个对象并将其从列表中删除。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MeterArchive
{
// instance variables - replace the example below with your own
ArrayList<Meter> meterList = new ArrayList<Meter>();

public void createClocks(){
    Clock clockOne = new Clock("KH001", "Yes", "ClassRoom005", 0.0);
    meterList.add(clockOne);
    Clock clockTwo = new Clock("KH002", "Yes", "ClassRoom006", 0.0);
    meterList.add(clockTwo);
}

public void remove( String regNumInput){
    for(Meter meter : meterList){
        for(int i = 0; i < meterList.size(); i++){
            if(regNumInput == meterList.get(i).getRegNum()){
                remove(meterList.get(i));
            }else{
                System.out.println("Did not found");
            }
        }
    }
}

public void showAll2(){
    System.out.println(meterList);
}
}

当我在输入字段中输入正确的“regNum”时,任何人都可以解释如何使 MeterArchive 类中的 remove 方法删除我想要删除的对象。我知道我可以使用 remove() 方法,但不知道如何在这里使用它。谢谢!

标签: java

解决方案


使用removeIf会容易得多:

int size = meterList.size();
meterList.removeIf(e -> regNumInput.equals(e.getRegNum()));
if(size == meterList.size()) System.out.println("Did not found");

推荐阅读