无法使用 Map 的 getOrDefault 函数找到符号

Cannot find symbol with getOrDefault function of Map

我创建了一个整数类型的 Hashamp

HashMap<Integer, Integer> map = new HashMap<>();

地图的键是一个 Integer 类型的数组,我正在尝试使用 put 和 getOrDefault 函数计算每个键的出现次数。

下面是相同的代码片段 -

   static int migratoryBirds(List<Integer> arr) {
        int count = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        System.out.println(map.toString());
         for(Integer bird : arr)
          {
               System.out.println(map.getOrDefault(bird,0));
              map.put(bird,map.getOrDefault(bird,0)+1);
          }

我在使用 getOrDefault 函数时遇到以下错误-

error: cannot find symbol
               System.out.println(map.getOrDefault(bird,0));
                                     ^
  symbol:   method getOrDefault(Integer,int)
  location: variable map of type HashMap<Integer,Integer>

如何解决错误?

getOrDefault 方法已添加到 Java 8

Since: 1.8

在早期版本中,您可以使用 get,如果为 null,则输入默认值。

请确保使用 Java-8 或更高版本,因为 Map#getOrDefault 是在 Java-8 中引入的。查看您的代码,我可以建议一个更好的选择,Map#merge

for(Integer bird : arr) {
    map.marge(bird, 1, Integer::sum);
}