从java中的hashMap列表的值中获取键

2 java arraylist hashmap

我有 4 个 hashMap:

         Map <String, Integer> item1 =new HashMap<String, Integer>();
         Map <String, Integer> item2 =new HashMap<String, Integer>();
         Map <String, Integer> item3 =new HashMap<String, Integer>();
         Map <String, Integer> item4 =new HashMap<String, Integer>();  
Run Code Online (Sandbox Code Playgroud)

我将其中 4 个添加到列表中:

       List<Map> Items= new ArrayList<>();
        Items.add(item1);
        Items.add(item2);
        Items.add(item3);
        Items.add(item4);
Run Code Online (Sandbox Code Playgroud)

我想使用 hashMaps“Items”列表从值中获取键所以我尝试了以下代码:

  for(int i=0; i<n; i++)
            {  
               String key= null;
               int value=v;
              for(Map.Entry entry: Items.get(i).entrySet()){
                  if(value == (entry.getValue())){
                      key = (String) entry.getKey();
                      break;
                  }
              }
Run Code Online (Sandbox Code Playgroud)

但是 Items.get(i).entrySet() 不起作用!

我收到这些错误:

-Map.Entry is a raw type. References to generic type Map<K,V>.Entry<K,V> should be parameterized
-Type mismatch: cannot convert from element type Object to Map.Entry
-Incompatible operand types int and Object
Run Code Online (Sandbox Code Playgroud)

有谁知道该怎么做?

Eri*_*c G 5

首先重新创建 List 变量以包含地图的类型。这将使.entrySet()返回的条目格式正确Map<String,Integer>

List<Map<String, Integer>> items = new ArrayList<>();

for (int i = 0; i < items.size(); i++) {
    String key = null;
    int value = 0;
    for (Map.Entry<String, Integer> entry: items.get(i).entrySet()) {
        if (value == (entry.getValue())) {
            key = (String) entry.getKey();
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)