簡體   English   中英

如何在給定itemNum的ArrayList中刪除Item?

[英]How can I remove an Item from an ArrayList given the itemNum?

我想刪除用戶將輸入的ItemNo項目。 如何檢查是否存在此項目的項目? 然后我怎么把它刪除? 以下是我到目前為止,我需要添加CompareTo()方法嗎?

物品類別:

public class Item {

public int itemNo;
public String itemName;
public double itemPrice;
public int itemQuantity;

Item(int number, String name, double price, int quantity)
{
itemNo=number;
itemName=name;
itemPrice=price;
itemQuantity=quantity;
}

刪除方法:

 public T remove(int givenPosition) {
     T result = null; 
     if ((givenPosition >= 1) && (givenPosition <= numberOfEntries)) {
     assert !isEmpty();
     result = list[givenPosition - 1]; 
     if (givenPosition < numberOfEntries)
                  removeGap(givenPosition);
               numberOfEntries--;
     } // end if
     return result; 

         } // end remove

包含方法:

 public boolean contains(T anEntry) {
     boolean found = false;
     for (int index = 0; !found && (index < numberOfEntries); index++) {
     if (anEntry.equals(list[index])) 
         found = true;
     }//end for
     return found;
     } // end contains

等於方法:

public boolean equals(Object object){
        Item item = (Item) object;
        if(itemNo == item.itemNo)
            return true;
        return false;
    }

好吧,你正試圖分離邏輯,但我會給你你的問題的代碼片段。

Item item = new Item(10 , "Item1", 50 , 100);
Item item2 = new Item(20 , "Item2", 50 , 100);
Item item3 = new Item(30 , "Item3", 50 , 100);

List<Item> itemList = new ArrayList<Item>();
itemList.add(item1);
itemList.add(item2);
itemList.add(item3);

public void removeItem(int itemNo){
       Iterator<Item> it = itemList.iterator();
       while(it.hasNext){
         if(item.next().itemNo == itemNo){
            it.remove;
            break;
         }
    }
}

由於Java8任何Collection(如List)都有removeIf(Predicate<? super E> filter)方法,它可以刪除項匹配過濾器。 所以你的代碼看起來像

list.removeIf(item -> item.getItemNo() == x );//where x is value you want to remove
private void removeObjectWithNumber(int number) {
    for (int i = 0; i < list.size(); i++) {
        Item item = list.get(i);
        if (item.getItemNo() == number) {
            list.remove(i);
            return;
        }
    }
}

使用ArrayList:

添加:

ArrayList<Item> mList = new ArrayList<Item>();
mList.add(new Item(101, "Television", 20000, 4));
mList.add(new Item(102, "Mobile", 6000, 4));

去掉 :

mList.remove(i /* index */);

包含:

    // override equals method in class
    @Override
  public boolean equals(Object v) {
        boolean retVal = false;

        if (v instanceof A){
            A ptr = (A) v;
            retVal = ptr.itemNo.longValue() == this.itemNo;
            // if you want to check more then you can do
            //  retVal = ptr.itemName.toString().equals(this.itemName.toString());
// further same for itemPrice, itemQuantity
        }

     return retVal;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM