无法使用 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的可能重复 公平地说,重复是有争议的......它涵盖了put
和replace
之间的相似性,但它不涵盖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的主要内容,如果未能解决你的问题,请参考以下文章
Servlet无法输出HashMap键到jsp:FileNotFoundException,util类在部署后无法找到本地文件
错误:TypeError:无法调用未定义的方法“替换”[重复]