3

私はここに言うエントリをたくさん見つけました

someFunc(new int[]{1,2,3});

メソッドを呼び出し、for/eachループで使用するために機能します。

// ======

コレクションへの割り当てはどうですか?

私はこれを試しました:

ArrayList<int[]> data = new ArrayList<int[]>();
data.add(new int[]{21, 19629});

「識別子が必要です」と「タイプの不正な開始」が表示されます。

これを機能させるために私にできることはありますか?

4

5 に答える 5

1

配列からリストを作成する最も簡単な方法:

List<String> myList = Arrays.asList("Hello", "There", "Foo", "Bar);

リストは固定サイズであり、入力配列に支えられているため、リストへの変更は実際には配列に書き込まれることに注意してください。要素を追加または削除すると、UnsupportedOperationExceptionが発生する可能性があります。要素の追加や削除など、配列をいじる場合は、要素を別のリストにコピーする必要があります。

于 2010-09-09T13:35:09.867 に答える
1

配列のリストを作成しました。それは本当にあなたが意図したことでしたか、それとも何かについて尋ねるつもりでしたか

ArrayList<Integer> data = new ArrayList<Integer>();
data.add(new int[]{1,2,3});

?

いずれにせよ、ArraysおよびCollectionsクラスに慣れてください。これらのクラスには、このような場合に役立つユーティリティが多数含まれています。

于 2010-09-09T13:30:34.380 に答える
0

これは、言語構文の制限、またはメソッド呼び出し構文の解析で式の生成の前に識別子の生成が検出されるという仕様のバグである可能性があります。メソッド呼び出し内で匿名配列宣言を混在させないでください。

data.add(new int [] {21、19629});

「識別子が必要です」と「タイプの不正な開始」が表示されます。

data.add(...)の「予期される識別子」は、コンパイラが識別子を予期し、匿名インスタンスに解決される式を見つけたことが原因である可能性があります。その構文が受け入れられる場所はいくつかありますが、data.add()に識別子が必要な理由がわかりません。

「型の不正な開始」は、コンパイラが式を匿名の型宣言であると見なしているが、構文ではメソッド呼び出しでそれを許可していない可能性があります。

変数を使用して作成してから、変数をメソッドargとして渡します。

int[] nums = new int[] {0,1,2};   
data.add(nums);

ArrayList.add()文法の詳細を探していたところ、誰かがArrayListを学習していたのと同様の問題についてこの答えを見つけました。JavaGlossaryには、コンパイル時エラーの優れたセットがあります。

于 2010-09-09T15:18:19.657 に答える
0

guava、特に google collections の部分をチェックしてください。

コレクション クラスのいくつかは、そのコレクションに与えられたすべてのオブジェクトを追加する静的メソッドof(...)を定義します。

静的インポートと組み合わせると、非常に簡潔なコレクションの初期化をオンザフライで行うことができます。

例えば

import static com.google.common.collect.ImmutableList.of;
...

someFunc(of("abc","def","ghi"));

文字列のリストで someFunc を呼び出します。

于 2010-09-09T13:41:57.430 に答える
0

実際、このコードは、整数のテーブルのリストを作成する場合に機能します。

public static void main(String[] args) {
    List<int[]> data = new ArrayList<int[]>();
    data.add(new int[]{21, 19629})
    for(int[] tab : data){//I loop each tab (only one here)
        for(int i: tab){//I loop each values
            System.out.println(i);
        }
    }

}

プリント 21 19629

于 2010-09-09T14:25:19.263 に答える