无法使用 HashMap 替换方法:调用需要 api 级别 24(当前最小值为 22):java.util.HashMap#replace

Posted

技术标签:

【中文标题】无法使用 HashMap 替换方法:调用需要 api 级别 24(当前最小值为 22):java.util.HashMap#replace【英文标题】:Cannot use HashMap replace method : call require api level 24 (current min is 22):java.util.HashMap#replace 【发布时间】:2018-10-11 20:09:21 【问题描述】:

各位,为什么我不能在我的 android Studio 项目中使用 HashMap 替换方法?

private HashMap<Integer, Integer> scoreLine = new HashMap<Integer, Integer>();
scoreLine.put(0, 22;
scoreLine.put(1, 46);
scoreLine.put(2, 89);

scoreLine.replace(1, 49); // I can't use this
scoreLine.replace(1, 46, 49); // I can't use this either

虽然我可以使用 put 方法添加项目

这是我的 gradle.build(只是代码的一部分)

android 
    compileSdkVersion 26
    defaultConfig 
        applicationId "com.example.practiceprojectweekend"
        minSdkVersion 22
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

如您所见,我确实将当前 minSdkVersion 设置为 22 并且替换方法需要最低级别 24

我确实将 minSDK 替换为 24 但后来我无法使用我的 Android 设备运行该应用程序

有没有办法在不改变 minSdkVersion 的情况下解决这个问题?

【问题讨论】:

你为什么要替换而不是再次使用 put? ***.com/a/35297640/4682816 另一个可能提供见解的问题 它会用相同的键覆盖项目吗?哇,我不知道 所以,是的,我只是检查一下。而“put”确实可以用来“替换” Difference between replace and put for HashMap的可能重复 公平地说,重复是有争议的......它涵盖了putreplace之间的相似性,但它不涵盖Android SDK方面。 【参考方案1】:

如果不更改 minSdkVersion,就无法解决这个问题。 replace(K, V) 在 SDK 版本 24 中添加,replace(K, V, V) 在 SDK 版本 26 中添加。

如 cmets 中所述,put 将替换现有值。

您可以在docs page查看更多详情

【讨论】:

好吧,我现在明白了,它自己说:“将指定的值与此映射中的指定键相关联。如果映射先前包含键的映射,则旧值是 替换。” @phaphapha 很高兴我能帮上忙。我在我的 android 项目上收到这种类型的错误消息太多次了(我使用cordova,默认情况下指定 Java 1.6,但我也使用需要 Java 1.7 的库,所以我必须去修复设置定期的配置文件。呃!) 你说在 SDK 24 中添加了替换,但它是标准 Java 集合库的一部分,那为什么会这样呢? 安德鲁,我不确定我是否听懂了你的问题。您是在问为什么 Google 直到 SDK 24 才实施它?或者为什么我说它是在 SDK 24 中添加的?还是别的什么?

以上是关于无法使用 HashMap 替换方法:调用需要 api 级别 24(当前最小值为 22):java.util.HashMap#replace的主要内容,如果未能解决你的问题,请参考以下文章

HashMap知识点

Servlet无法输出HashMap键到jsp:FileNotFoundException,util类在部署后无法找到本地文件

错误:TypeError:无法调用未定义的方法“替换”[重复]

java - 如何将Java hashMap内容的全部放在另一个上,但不替换现有的键和值?

存储现有值时,Java的HashMap密钥替换

SpringBoot自定义初始化Bean+HashMap优化策略模式实践