3

arraynew Integer[]{ 1, 2, 3 }のように、たった 1 行を使用して TreeMap を作成および設定できますか?

// I want to use it in situations like this:
this.lookFor( new TreeMap( {...} ) );

HashMapまたはLinkedHashMapあまりにもチャンスはありますか?

4

4 に答える 4

9

マップを具体的に初期化するための組み込み構文はありません。ただし、「二重ブレースの初期化」と呼ばれる特別な構文を利用できます。

Map<String, Integer> map = new TreeMap<String, Integer>() {{ put("one", 1); put("two", 2); put("three", 3); }};

中かっこの外側のペアは、を拡張する匿名内部クラスを宣言および初期化していることを意味しますTreeMap。中かっこの内側のペアは、インスタンス初期化子(インスタンスの作成時に実行されるコード) を表します。

于 2013-11-13T21:18:51.987 に答える
2

の中括弧表記

new Integer[]{ 1, 2, 3 }

配列型の特別な表記法です。

の中括弧表記

new TreeMap( {...} )

コンパイルされません。

の中括弧表記

new TreeMap(  ) {}

の匿名サブクラスを作成しますTreeMap。あなたができることは、これを行い、すぐにインスタンス初期化子を使用してMap.

new TreeMap() {{this.put(1,2);}}

もちろん、ユースケースに当てはまる型を使用してください。

これは、二重ブレースの初期化と呼ばれます。

于 2013-11-13T21:19:20.157 に答える
-1

このサンプルコードを使用できると思います

this.lookFor(new TreeMap<Object,Object>(){
    @Override 
    public boolean isEmpty() {
        /*
        *some code
        */
    }
});
于 2013-11-13T21:16:34.143 に答える