it-swarm.com.ru

Как добавить элементы массива строк в список массивов строк?

Я пытаюсь передать строковый массив в качестве аргумента конструктору класса Wetland; Я не понимаю, как добавить элементы массива строк в список массивов строк.

import Java.util.ArrayList;

public class Wetland {
    private String name;
    private ArrayList<String> species;
    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        for (int i = 0; i < speciesArr.length; i++) {
            species.add(speciesArr[i]);
        }
    }
}
57
robinhood91

У вас уже есть встроенный метод для этого: -

List<String> species = Arrays.asList(speciesArr);

NOTE: - Вы должны использовать List<String> species, а не ArrayList<String> species.

Arrays.asList возвращает другую ArrayList -> Java.util.Arrays.ArrayList, которая не может быть приведена к Java.util.ArrayList.

Тогда вам придется использовать метод addAll, который не так хорош. Так что просто используйте List<String>

NOTE: - Список, возвращаемый Arrays.asList, является списком фиксированного размера. Если вы хотите добавить что-то в список, вам нужно создать другой список и использовать addAll для добавления в него элементов. Итак, тогда вам лучше пойти по второму пути, как показано ниже:

    String[] arr = new String[1];
    arr[0] = "rohit";
    List<String> newList = Arrays.asList(arr);

    // Will throw `UnsupportedOperationException
    // newList.add("jain"); // Can't do this.

    ArrayList<String> updatableList = new ArrayList<String>();

    updatableList.addAll(newList); 

    updatableList.add("jain"); // OK this is fine. 

    System.out.println(newList);       // Prints [rohit]
    System.out.println(updatableList); //Prints [rohit, jain]
101
Rohit Jain

Я предпочитаю это,

List<String> temp = Arrays.asList(speciesArr);
species.addAll(temp);

Причина в том, что метод Arrays.asList () создаст список фиксированного размера. Так что если вы сохраните его непосредственно в виде, то вы не сможете добавить больше элемента, но он не доступен только для чтения. Вы можете обязательно редактировать свои пункты. Так что возьмите это во временный список.

Альтернатива для этого есть,

Collections.addAll(species, speciesArr);

В этом случае вы можете добавлять, редактировать, удалять свои элементы.

14
Ravi A

Думаю, я добавлю это к смеси:

Collections.addAll(result, preprocessor.preprocess(lines));

Это изменение, которое рекомендует Intelli.

из ага:

Adds all of the specified elements to the specified collection.
Elements to be added may be specified individually or as an array.
The behavior of this convenience method is identical to that of
<tt>c.addAll(Arrays.asList(elements))</tt>, but this method is likely
to run significantly faster under most implementations.
 
When elements are specified individually, this method provides a
convenient way to add a few elements to an existing collection:
<pre>
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
</pre>

10
keisar

Вам следует создать экземпляр ArrayList перед тем, как добавлять элементы:

private List<String> species = new ArrayList<String>();
7
Jens Piegsa

Arrays.asList является мостом между Array и структурой коллекции и возвращает список фиксированного размера, поддерживаемый Array.

species = Arrays.asList(speciesArr);
5
Subhrajyoti Majumder

В Java 8 синтаксис этого значительно упрощается и может использоваться для краткого выполнения этого преобразования.

Обратите внимание, вам нужно будет изменить поле с конкретной реализации на интерфейс List, чтобы это работало гладко.

public class Wetland {
    private String name;
    private List<String> species;
    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        species = Arrays.stream(speciesArr)
                        .collect(Collectors.toList());
    }
}
3
Makoto

Метод Arrays.asList() просто возвращает тип List

char [] arr = { 'c','a','t'};    
ArrayList<Character> chars = new ArrayList<Character>();

Чтобы добавить массив в список, сначала преобразуйте его в список, а затем вызовите addAll

List arrList = Arrays.asList(arr);
chars.addAll(arrList);

Следующая строка вызовет ошибку компилятора

chars.addAll(Arrays.asList(arr));
2
webjockey
ArrayList<String> arraylist= new ArrayList<String>();

arraylist.addAll( Arrays.asList("mp3 radio", "presvlake", "dizalica", "sijelice", "brisaci farova", "neonke", "ratkape", "kuka", "trokut")); 
1
pikardtt

Arrays.asList - это удобная функция, доступная в Java для преобразования переменной массива в List или Collection. Для лучшего понимания рассмотрим следующий пример:

package com.stackoverflow.works;

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

public class Wetland {
    private String name;
    private List<String> species = new ArrayList<String>();

    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        this.species = Arrays.asList(speciesArr);
    }

    public void display() {
        System.out.println("Name: " + name);
        System.out.println("Elements in the List");
        System.out.println("********************");
        for (String string : species) {
            System.out.println(string);
        }
    }

    /*
     * @Description: Method to test your code
     */
    public static void main(String[] args) {
        String name = "Colors";
        String speciesArr[] = new String [] {"red", "blue", "green"};
        Wetland wetland = new Wetland(name, speciesArr);
        wetland.display();
    }

}

Результат:

enter image description here

1
Sarath Kumar Sivan

Используйте метод asList(). Из Java Doc asList

List<String> species = Arrays.asList(speciesArr);
0
Sumit Singh