2012-04-27 5 views
13

リンクされたリストを持ち、addメソッドを使ってエントリを入力する方法を知っています。 しかし、私はエントリでエントリを追加したくありません。リストに初期値を持つリンクリストを宣言する方法はありますか?LinkedListをエントリ/値で初期化するにはどうすればよいですか?

たとえば、リストに1.0 & 2.0を追加したい場合、私は1行で何かできますか? 何かのように:

List<Double> temp1 = new LinkedList<Double>(Arrays.asList(1.0, 2.0)); 
+0

は、あなたが何をしたいかによって異なります'Map'を使うか、キーと値のために別々のリストを持ちます。それらを1つのリストでお互いに並べると、本当に扱いにくいです。 –

+0

@LouisWasserman:OPがマップエントリの意味でエントリを望んでいるようには聞こえません...リストの要素だけです。 – ColinD

+0

そうですね、リストを2つに分割することを提案しました。リストに「関連する」要素のペアを追加する場合は、オブジェクトにラップするか、2つのリストに分割する方が理にかなっています。 OPの基本的な質問「特定の要素でリストを初期化するにはどうしたらいいですか」の解決策がありますが、残りの質問はOPの実際の問題に対する最良のアプローチではないかもしれません。 –

答えて

43

あなたがこの方法を行うことができますコレクションのイテレータによって返される順序で、指定されたコレクションの要素を含むリスト

したがって、このコンストラクタを使用してLinkedListを宣言し、宣言時に値で初期化することができます。任意のCollection<Double>タイプのインスタンスを指定できます。あなただけの値の集合ではなく、Collectionオブジェクトを持っている場合は

は、その後、あなたはListとリターンを提供する値のセットを変換する静的asList()メソッドを持っているjava.util.Arraysクラスを使用することができます。以下の例を参照してください:

List<Double> list = new LinkedList<Double>(Arrays.asList(1.2,1.3,3.2)); 

あなたがList<Double>のインスタンスが必要な場合は、あなたがそうでなければ、あなたが値でList<Integer>のインスタンスを取得します、小数点以下に値を提供しなければなりません。

8

LinkedListタイプCollectionのパラメータ受け入れる次のコンストラクタ、あります:

public LinkedList(Collection<? extends E> c) 

このコンストラクタ「構築を

List<Double> temp1 = new LinkedList<Double>(1,2); 
3

あなたはまた、

static <T> LinkedList<T> createLinkedList(T...elements) { 
    LinkedList<T> newList = new LinkedList<T>(); 
    for (T el : elements) { 
     newList.add(el); 
    } 

    return newList; 
} 

のようなメソッドを作成し、それを使用することができます:どちらかを使用するには良いアイデアかもしれませんが、「エントリ」

 LinkedList<Integer> a = createLinkedList(1, 2, 3); 

     for (Integer item : a) { 
      System.out.println(item); 
     } 
関連する問題