it-roy-ru.com

Java - Добавление списка <String> из параметра в существующий список

Я хочу иметь возможность добавлять новые записи ввода параметров в список.

Например:

public static void theList (List<String> wholeList) {

    wholeList = new ArrayList<String>();
    wholeList.add("Lettuce");
    wholeList.add("Bacon");
    wholeList.add("Milk");

    wholeList.add(wholeList); <--------- error - addAll doesn't fix it.

Выше я попробовал "wholeList.add (wholeList)". Я намеревался сделать следующее: любой дополнительный (элемент (из параметра), при добавлении входных данных для запуска этого метода), который мне нужно добавить, будет добавлен в "wholeList".

Как видите, в список добавлены 3 предмета: салат, бекон и молоко. Однако, если я вдруг передумал и хочу добавить еще один элемент (через параметр), я могу просто добавить его в текущий список (wholeList).

Также еще один вопрос.

Есть ли более удобный способ добавить список элементов вместо того, чтобы добавлять его один за другим (при использовании импорта того же списка)? Скажите, {"Салат", "Молоко", "Бекон", и т.д.}?

TY.

4
Dembele

Как я понимаю, addAll() - это все, что вам нужно:

List<String> someList = new ArrayList<String>();
List<String> itemsToAdd = new ArrayList<String>();
itemsToAdd.add("one");
itemsToAdd.add("two");
someList.addAll(itemsToAdd);
// or use handy method which creates temporary list internally:
someList.addAll(Arrays.asList("three", "four"));
6
Ivan Borisov

Ну, ваш код делает что-то очень неправильно. Вы инициализируете wholeList внутри метода, и после того, как метод завершен, он исчезает (указатели в Java). Кроме того, вы добавили список к себе, так что код, вероятно, не то, что вы хотели сделать.

вы, вероятно, хотели создать новый список внутри метода и добавить все элементы в список в параметре. Если это так, вы не должны использовать "новый" в списке, который вы получили от параметра.


Собственно, после прочтения заголовка вашего вопроса -

  1. Вам нужен существующий список - он не может быть с именем списка в параметре. Давайте назовем его существующим списком.
  2. После того, как вы получите список в методе, вы не должны использовать для него "новый ArralyList", так как это приведет к аннулированию списка из параметра.

Ваш код должен выглядеть так:

 public static void theList (List<String> wholeList) {

    wholeList.add("Lettuce");
    wholeList.add("Bacon");
    wholeList.add("Milk");

    existingList.add(wholeList);
4
Issahar Weiss

Единственным "более чистым" способом добавления значений в список будет:

wholelist.addAll(Arrays.asList("Lettuce", "Bacon", "Milk"));

Но я вижу, что Топ ответ уже заявляет, что. Таким образом, вы можете очистить его, создав массив как глобальную частную переменную вне метода. Также, как сказал другой ответ, у вас должен быть другой отдельный список, который не имеет того же имени, что и список параметров. Вот пример с необходимыми библиотеками:

import Java.util.Arrays;
import Java.util.List;
import Java.util.ArrayList;

public class Example{
   private List<String> globalList = new ArrayList<>();
   private String[] list = {"Bacon", "Lettuce", "Milk"};

   public static void theList (List<String> wholelist) {
      wholelist.addAll(Arrays.asList(list));
      globalList.addAll(wholeList);
   }

Если вы хотите использовать wholeList в качестве имени для обоих списков, вы можете изменить globalList выше на wholelist, а затем:

public static void theList (List<String> wholelist) {
   this.wholelist.AddAll(wholelist);
   this.wholelist.addAll(Arrays.asList(list));
}

Но я бы избегал этого.

0
Cody Ferguson