如何深入搜索地图,Java?

时间:2012-10-10 08:27:33

标签: java map

我对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

是否可以在地图上进行搜索?

提前致谢。

1 个答案:

答案 0 :(得分:5)

  

但是在这张地图中,我需要在地图中搜索一些值,例如455451。

基本上你需要遍历所有键/值对:

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

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

您可能还想查看GuavaMultimap类型。

相关问题