Как использовать ArrayList в качестве параметра в методе для удаления элементов из ArrayList класса? - PullRequest
0 голосов
/ 30 апреля 2019

Мой друг и я готовимся к нашему экзамену по программированию на экзамене Sample Programming Exam, и у нас возникают проблемы с использованием списка массивов в качестве параметра метода для удаления нескольких элементов из списка массивов в одном классе.

Мы попытались найти в Интернете и использовать наш учебник BlueJ, чтобы найти решение.

Инструкция на нашем листе назначения гласит: «Напишите метод removeItemFromOrder с массивом строк itemArray для удаления нескольких продуктов питания из заказа».

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!**
    }
}

Ответы [ 4 ]

1 голос
/ 30 апреля 2019

если вам нужно удалить несколько элементов, вы можете добавить их во временный список и использовать 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);
0 голосов
/ 30 апреля 2019

Как я вижу, список массивов, который вы передаете методу removeOrderItem, представляет собой список строк, а список массивов в классе - это список OrderItem. Итак, сначала вы должны найти, что общего между этими двумя списками.

Предположим, что модель OrderItem имеет поле, содержащее название каждого заказа (orderItem.getName()). И itemArray в методе removeOrderItem - это список, содержащий имена некоторых ордеров, которые вы хотите удалить.

Хорошо, в этом случае мы можем сделать это:

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);
}
0 голосов
/ 30 апреля 2019

Очень хороший друг, вы можете попробовать метод .remove() до тех пор, пока у вас есть ключ объекта, то есть секретный

0 голосов
/ 30 апреля 2019

Arraylist.clear ();метод может быть использован для очистки списка массивов Arraylist.removeAll ();Метод удаляет все элементы списка массивов.Оба метода очищают элементы списка.Метод clear () имеет лучшую производительность благодаря меньшему количеству строк, которые он должен выполнить.Эта ссылка https://howtodoinjava.com/java/collections/arraylist/empty-clear-arraylist/ предоставляет исходные коды для двух методов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...