Подтвердить что ты не робот

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

Я пытаюсь передать строковый массив в качестве аргумента конструктору класса 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]);
        }
    }
}
4b9b3361

Ответ 1

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

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

ПРИМЕЧАНИЕ: - Вы должны использовать List<String> species not ArrayList<String> species.

Arrays.asList возвращает другую ArrayListjava.util.Arrays.ArrayList, которая не может быть указана на java.util.ArrayList.

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

ПРИМЕЧАНИЕ: - Список, возвращаемый 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]

Ответ 2

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

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

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

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

Collections.addAll(species, speciesArr);

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

Ответ 3

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

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

Ответ 4

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

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

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

из javadocs:

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>

Ответ 5

Arrays.asList - это мост между массивом и массивом сбора, и он возвращает список фиксированных размеров, поддерживаемый массивом.

species = Arrays.asList(speciesArr);

Ответ 6

В 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());
    }
}

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

Использовать метод asList(). Из java Doc asList

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

Ответ 10

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));

Ответ 11

public class duplicateArrayList {


    ArrayList al = new ArrayList();
    public duplicateArrayList(Object[] obj) {

        for (int i = 0; i < obj.length; i++) {

            al.add(obj[i]);
        }

        Iterator iter = al.iterator();
        while(iter.hasNext()){

            System.out.print(" "+iter.next());
        }
    }

    public static void main(String[] args) {


    String[] str = {"A","B","C","D"};

    duplicateArrayList dd = new duplicateArrayList(str);

    }

}