67

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]);
        }
    }
}
4

11 に答える 11

113

あなたはすでにそのための組み込みメソッドを持っています:-

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

:-使用しList<String> speciesないでArrayList<String> speciesください。

Arrays.asListにタイプキャストできない別のArrayList->を返します。java.util.Arrays.ArrayListjava.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]
于 2012-10-12T06:41:29.737 に答える
12

これをミックスに追加すると思いました:

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

これは Intelli が推奨する変更です。

javadoc から:

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>

于 2015-07-11T23:27:25.660 に答える
7

ArrayListアイテムを追加する前に、インスタンス化する必要があります。

private List<String> species = new ArrayList<String>();
于 2012-10-12T06:53:17.090 に答える
6

Arrays.asListは、配列とコレクションフレームワークの間のブリッジであり、配列に基づく固定サイズのリストを返します。

species = Arrays.asList(speciesArr);
于 2012-10-12T06:41:29.630 に答える
3

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());
    }
}
于 2016-04-11T22:52:29.043 に答える
1

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

}

出力:

ここに画像の説明を入力

于 2012-10-12T07:09:47.937 に答える
0

asList()メソッドを使用します。Java Doc asListから

List<String> species = Arrays.asList(speciesArr);
于 2012-10-12T06:44:34.070 に答える
-2
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);

    }

}
于 2016-07-19T14:24:03.713 に答える