2

ネストされたtreeMapがあり、特定のキーがあるかどうかを内部マップごとに確認する必要があります。例えば:

TreeMap<String,TreeMap<String,Integer>> map

for each loop {
//check if the inner map has the key in it
}

for-each ループをどのようにフォーマットしますか? ありがとう!

4

4 に答える 4

4

Map の を使用してentrySet()、次のようにマップ内のエントリを反復処理できます。

for (Map.Entry<String, TreeMap<String, Integer>> entry : map.entrySet())
{
    if (entry.getValue().containsKey(key)) {
        return entry.getValue().get(key);
    }
}

またはvalues()、Map のコレクションを使用してエントリを反復処理することもできます。

for (TreeMap<String, Integer> value : map.values())
{
    if (value.containsKey(key)) {
        return value().get(key);
    }
}
于 2012-10-30T02:33:56.103 に答える
2

次のように、ネストされた 2 つの「foreach」ループを使用して、ネストされた 2 つのマップを反復処理できます。

for (Map.Entry<String,TreeMap<String,Integer>> entry1 : map.entrySet()) {
    Map<String,Integer> innerMap = entry1.getValue();
    if (innerMap.containsKey("my-key")) {
        System.out.println("Map at key "+entry1.getKey()+" contains 'my-key'");
    }
}
于 2012-10-30T02:33:36.073 に答える
1

外側のマップから値を取得し、それぞれの要素を繰り返し処理します。である各要素で、マップ要素に目的のキーが含まれているかどうかを確認するためTreeMap<String,Integer>に使用します。containsKey

    TreeMap<String,TreeMap<String,Integer>> map = 
                                  new TreeMap<String, TreeMap<String,Integer>>();
    for(TreeMap<String,Integer> mapElement: map.values()) {
        //check if the inner map has the key in it
        if(mapElement.containsKey("searchKey")){
            System.out.println("Match key found in this map element");
        }
    }
于 2012-10-30T02:35:30.763 に答える
0

または、Guava TreeBasedTableを使用することもできます。ネストされたデータ構造を処理するための便利なメソッドが多数あります。

TreeBasedTable<String, String, Integer> tb = TreeBasedTable.create();
tb.put("rowA", "colA", 1);
tb.put("rowB", "colB", 2);

tb.containsRow("rowA");
...
于 2012-10-30T04:23:45.297 に答える