0

我对 Java 很陌生。我编写了使用红黑树的代码:

            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());
    }
}

显然这不是非常有效 - 如果你需要做很多,你可能还想创建一个反向映射,并保持两者同步。

您可能还想查看GuavaMultimap类型。

于 2012-10-10T08:31:37.000 回答