7

要素を追加するコードスニペットの下にありますArrayList

List <Integer> myList = new  ArrayList();
myList.add(1);
myList.add(2);
myList.add(3);
myList.add(4);

ArrayList以下のような要素を に追加するための、より読みやすくエレガントな方法を探しています。以下は許可されていませんが、他に読みやすい/エレガントな方法はありますか?

myList.add(1).add(2).add(3).add(4)

更新:-私はJava 1.6を使用しています

4

8 に答える 8

15

インスタンス化する前に要素がわかっている場合:

List<Integer> myList = new ArrayList<>(Arrays.asList(1, 2, 3, 4));

または、それらを既存のリストに追加する場合:

List<Integer> myList = new ArrayList<>();
// do stuff
myList.addAll(Arrays.asList(1, 2, 3, 4));

読みやすくするために、次のことができます。

import static java.util.Arrays.asList;

そして単に使用する

List<Integer> myList = new ArrayList<>(asList(1, 2, 3, 4));

また

List<Integer> myList = new ArrayList<>();
// do stuff
myList.addAll(asList(1, 2, 3, 4));

リストにこれ以上要素を追加したくないことがわかっている場合は、単純に次のように記述できます。

List<Integer> myList = Arrays.asList(1, 2, 3, 4);

または静的インポートを使用:

List<Integer> myList = asList(1, 2, 3, 4);
于 2013-05-14T09:43:21.943 に答える
3

これが読める場合は、もう1つの方法があります

List<Integer> list = new ArrayList<Integer>() {{
    add(1);add(2);add(3);
}};
于 2013-05-14T09:46:19.083 に答える
2

..次に、新しいクラスを返すArrayListメソッドを追加することでメソッドをチェーンできますaddMeArrayList

class chainedArrayList extends ArrayList
{
     public chainedArrayList addMe(Object o)
     {add(o);return this;}
}

メソッドを連鎖できるようになりました

mychainedArrayList.addMe(1).addMe(2).addMe(3).addMe(4);
于 2013-05-14T09:48:47.133 に答える
1

Eclipse Collectionsでは、変更可能な整数のリストが必要な場合は、次を使用できます。

MutableList<Integer> list1 = Lists.mutable.with(1).with(2).with(3).with(4);
MutableList<Integer> list2 = Lists.mutable.with(1, 2, 3, 4);
Assert.assertEquals(list1, list2);

ボクシングなしで int の変更可能なリストが必要な場合は、次を使用できます。

MutableIntList primitiveList1 = IntLists.mutable.with(1).with(2).with(3).with(4);
MutableIntList primitiveList2 = IntLists.mutable.with(1, 2, 3, 4);
Assert.assertEquals(primitiveList1, primitiveList2);

注: 私は Eclipse コレクションのコミッターです。

于 2013-05-15T18:58:38.710 に答える
0

これは一つの方法です。しかし、値が常に1...4であるとは限りません。それでも、おそらく for ループを使用できます。

for (int i = 1; i <= 4; i ++){
mylistAdd(i)  
}
于 2013-05-14T09:46:48.027 に答える
0

残念ながら、ブール値を返すため、拡張しない限り、ビルダーのスタイルで実行できます。

グアバ(Google コレクション) に自分に合ったものがあるかどうかを確認してください。彼らはあなたに合うかもしれないし、合わないかもしれないビルダースタイルを使います. お気に入り..

public static <E> List<E> asList(@Nullable 
             E first,
             E[] rest)

Javaで短縮版が必要な場合は、groovyの使用も検討できます

def list = [5, 6, 7, 8]

しかし正直なところ、for ループと add を実行することは十分に洗練されており、これ以外にも心配すべきことがたくさんあります。

于 2013-05-14T09:56:30.180 に答える