根据用户输入从ArrayList中删除Object

时间:2014-01-17 08:52:22

标签: java object arraylist iterator

我有一个看起来像这样的对象:

Account account = new Account (0, fName, sName, adr, city, pos, uniqueID);

然后我通过用户输入将该对象放到ArrayList:

List<Account> newAcc = new ArrayList<Account>();

这是问题所在。我需要一种灵活的方法来根据用户输入删除该对象。这就是我尝试过的:

System.out.print("1. Client with Accounts.\n2. Client with Savings Accounts.\n3. Remove all Accounts.\n");
int inputRmv = in.nextInt();

case 1:
    for (Iterator i = newAcc.iterator(); i.hasNext(); ) {
        if (i.equals(rmvID)) {
            newAcc.remove(i);

这不起作用。该对象不会以这种方式删除。

基本上:有没有办法使用用户输入然后遍历列表以查看是否有任何对象包含与对象的任何部分等效的字符串?

我迫切需要,所以向我发出正确方向的任何帮助都非常感激!

干杯。

2 个答案:

答案 0 :(得分:0)

您将Iterator对象与rmvId进行比较。这将始终返回false,因为它们不是type。我想你想检查迭代器的下一个对象的id是否等于rmvId

因此,请使用i.next()获取下一个SavingsAccount,将其ID与rmvId进行比较,然后通过Iterator将其删除。

  SavingsAccount sa = i.next();
  if (sa.getId().equals(rmvID)) { // just an example.. I don't know how you access the 
                                  // saving account's id nor it's type. This example expect
                                  // it is `Integer`
     i.remove();
  }

如果SavingsAccount ID属于int类型,您可以通过sa.getId() == rmvID进行比较。

答案 1 :(得分:0)

检查对象属性是否包含给定的id,然后通过索引

删除列表中的相关对象
for(int i=0;i<newSacc.size();i++){
    if (newSacc.get(i).getId().equals(rmvID)){
        newSacc.remove(i);
    }
}