【问题标题】:How do I use an ArrayList as a parameter in a method to remove elements from the class's ArrayList?如何在方法中使用 ArrayList 作为参数从类的 ArrayList 中删除元素?
【发布时间】:2019-04-30 04:01:46
【问题描述】:

我和我的朋友正在为我们的编程考试学习示例编程考试,并且在使用数组列表作为参数从同一类中的数组列表中删除多个项目的方法中遇到问题。

我们已经尝试搜索网络并使用我们的 BlueJ 教科书来寻找解决方案。

我们的作业表上的说明是:“编写一个带有字符串数组 itemArray 参数的方法 removeItemFromOrder 以从订单中删除多个食品。”

import java.util.ArrayList;
/**
 * Write a description of class Order here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Order
{
    // instance variables - replace the example below with your own
    private ArrayList<OrderedItem> order;

    /**
     * Constructor for objects of class Order
     */
    public Order()
    {
        order = new ArrayList<>();
    }

    /**
     * Returns the order collection to the user.
     * @return the order collection.
     */
    public ArrayList getOrder()
    {
        return order;
    }

    /**
     * Add an item to the order.
     * @param OrderedItem the item to be added
     */
    public void addOrderItem(OrderedItem foodItem)
    {
        order.add(foodItem);
    }

    public void removeOrderItem(ArrayList<String> itemArray)
    {
        //**We don't know what to put here!**
    }
}

【问题讨论】:

标签: java arrays arraylist collections


【解决方案1】:

如果您需要删除多个项目,可以将它们添加到临时列表并使用 removeAll 也

// creating ArrayList 
java.util.List<String> list = new ArrayList<>();  
list.add("apple");
list.add("banana");
list.add("mango");
list.add("barry");

java.util.List<String> needToRemove = new ArrayList<>();
needToRemove.add("apple");
needToRemove.add("banana");

// removeAll will remove multiple elements,
// We can pass any collection like Set, List or any other
list.removeAll(needToRemove);        

System.out.println("After Removed From List:");
list.forEach(System.out::println);

【讨论】:

【解决方案2】:

Arraylist.clear();方法可用于清除数组列表 Arraylist.removeAll();方法删除数组列表的所有元素。 这两种方法都会清除列表中的元素。 clear() 方法具有更好的性能,因为它必须执行的行数更少。 这个链接https://howtodoinjava.com/java/collections/arraylist/empty-clear-arraylist/提供了这两种方法的源代码

【讨论】:

    【解决方案3】:

    很好的朋友,你可以试试.remove()的方法,只要你有对象的key,就是secunecial

    【讨论】:

    • 我们正在尝试使用数组列表作为从主集合中删除项目的方法中的参数从主数组列表中删除项目。
    【解决方案4】:

    正如我所见,您传递给removeOrderItem 方法的数组列表是一个字符串列表,而您在类中的数组列表是一个OrderItem 列表。所以首先你必须找到这两个列表之间的共同点。

    假设OrderItem 的模型有一个包含每个订单名称的字段(orderItem.getName())。 removeOrderItem 方法中的 itemArray 是一个列表,其中包含您要删除的一些订单的名称。

    好的,在这种情况下,我们可以这样做:

    public void removeOrderItem(ArrayList<String> itemArray) {
        List<OrderedItem> tempList = new ArrayList<>();
    
        for (OrderedItem food: this.order) {
            for (String foodName: itemArray) {
               if (food.getName().equals(foodName))
                   tempList.add(food);
                   break;
            }
        }
    
        this.order.removeAll(tempList);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      相关资源
      最近更新 更多