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



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

11 ответов:

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

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

Примечание: - вы должны использовать List<String> species не ArrayList<String> species.

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

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

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

    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]

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

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

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

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

Collections.addAll(species, speciesArr);

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

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

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>

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

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

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

species = Arrays.asList(speciesArr);

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

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

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

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

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

использовать asList() метод. Из документации asList

List<String> species = Arrays.asList(speciesArr);
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);

    }

}

Comments

    Ничего не найдено.