0

私はJavaが初めてです。Red Black ツリーを使用するコードを作成しました。

            TreeMap test = new TreeMap();
            Map mainMap = new HashMap<>();
            Map tempMap = new HashMap<>();
            List<Integer> list = new ArrayList<>();


            tempMap.put("Visa Credit Card",447747);
            list.add(421323);
            list.add(421630);
            list.add(455451);
            list.add(469375);
            tempMap.put("Visa Debit card",list);

            tempMap.put("Master Card Credit Card",523951);
            tempMap.put("Master Debit Card",5399);

            mainMap.put("ICCI",tempMap);
            mainMap.put("Next",1234);

            test.put("Values",mainMap);

            System.out.println(mainMap);

次を印刷しています:

{Next=1234, ICCI={Master Card Credit Card=523951, Visa Debit card=[421323, 421630, 455451, 469375], Master Debit Card=5399, Visa Credit Card=447747}}

私が期待したように。しかし、このマップでは、たとえば、マップ内のいくつかの値を検索する必要があります455451。そうする場合、次のように出力されるはずです:

Visa Debit card, ICCI.

地図上で検索することはできますか?

前もって感謝します。

4

1 に答える 1

6

しかし、このマップでは、たとえば 455451 など、マップ内のいくつかの値を検索する必要があります。

基本的に、すべてのキーと値のペアを反復処理する必要があります。

for (Map.Entry<String, List<Integer>> entry : map.entrySet()) {
    if (entry.getValue().contains(targetValue)) {
        System.out.println(entry.getKey());
    }
}

明らかに、これは非常に効率的ではありません。これを頻繁に行う必要がある場合は、リバース マップも作成して、2 つの同期を維持することをお勧めします。

Guavaの型も参照してくださいMultimap

于 2012-10-10T08:31:37.000 に答える