29

C# では、ある種のコレクションを作成し、同じ行のデータで初期化できます。

var foo = new List<string> {"one","two","three"};

Javaでこれを行う同等の方法はありますか?

4

6 に答える 6

44

読み取り専用が必要な場合 List

List<String> numbers = Arrays.asList("one","two","three");

// Can't add since the list is immutable
numbers.add("four"); // java.lang.UnsupportedOperationException

後で変更したい場合。List

List<String> numbers2 = new ArrayList<String>(
                            Arrays.asList("one","two","three"));
numbers2.add("four");

System.out.println(numbers2); // [one, two, three, four]
于 2013-10-04T15:33:38.217 に答える
10

使用できますArrays.asList(T... a)

List<String> foo = Arrays.asList("one","two","three");

ボリスがコメントで言及しているように、結果Listは不変です(つまり、読み取り専用)。ArrayListコレクションを変更するには、次のように変換する必要があります。

List<String> foo = new ArrayList<String>(Arrays.asList("one","two","three"));

List匿名サブクラスと初期化子を使用して を作成することもできます。

List<String> foo = new ArrayList<String>() {
    {
        add("one");
        add("two");
        add("three");
    }
};
于 2013-10-04T15:29:53.893 に答える
4

私は Guava (以前は Google Collections と呼ばれていました) ライブラリを使用してこれを行うことを好みます。これにより、型を書き留める必要がなくなり、データをすぐに追加するあらゆる種類の方法が提供されます。

例:List<YourClass> yourList = Lists.newArrayList();

またはデータを追加すると:List<YourClass> yourList = Lists.newArrayList(yourClass1, yourclass2);

他のすべての種類のコレクションとそのさまざまな実装についても同じことが言えます。もう一つの例:Set<String> treeSet = Sets.newTreeSet();

https://code.google.com/p/guava-libraries/で見つけることができます

于 2013-10-04T15:33:51.253 に答える
1

私が思いついた最高のものは次のとおりです。

final List<String> foo = new ArrayList<String>() {{
  add("one");
  add("two");
  add("three");
}};

基本的に、それはクラスの匿名サブクラスを作成していることを意味し、それは をArrayList使用して静的に初期化されます"one", "two", "three"

于 2013-10-04T15:31:10.410 に答える
0
List<String> list = Arrays.asList("one","two","three")
于 2013-10-04T15:29:14.250 に答える
0
List<String> numbers = Arrays.asList("one","two","three");

ボリスがコメントしたように、それはあなたをnumbers不変にします。

はい、できますが、2 行でできます。

List<String> numbers= new ArrayList<String>();
Collections.addAll(numbers,"one","two","three");

それでも欲しい方は一行のみ、ガウバ付き

List<String> numbers= Lists.newArrayList("one","two","three");
于 2013-10-04T15:30:01.437 に答える