如何将Java 8 map.remove转换为Java 1.6?
发布时间:2020-05-24 17:49:56 所属栏目:Java 来源:互联网
导读:我有以下内容: fruitMap.remove(fruitId, fruitProperties); fruitMap是: private MapFruitId, FruitProperties fruitMap = new HashMapFruitId, FruitProperties(); 当我尝试构建我的代码时,我得到一个: ERRORThe method remove(Objec
我有以下内容: fruitMap.remove(fruitId,fruitProperties); fruitMap是: private Map<FruitId,FruitProperties> fruitMap = new HashMap<FruitId,FruitProperties>(); 当我尝试构建我的代码时,我得到一个: ERROR The method remove(Object) in the type Map<MyImplementation.FruitId,FruitProperties> is not applicable for the arguments (Map<MyImplementation.FruitId,FruitProperties>) 有什么问题? 请注意,thiis调用是在我的“FruitImplementation”类中的方法“removeFruit()”内. 解决方法remove(key,value)方法如果当前映射到value,则删除key的条目.该方法是在Java 1.8中添加的. Map接口的Javadoc提到了以下默认实现:if (map.containsKey(key) && Objects.equals(map.get(key),value)) { map.put(key,newValue); return true; } else return false; 由于Objects类仅在Java 1.7中添加,因此对于Java 1.6,您必须自己编写相等性测试.因此,如果您不需要方法的返回值,则可以将map.remove(key,value)替换为: if (map.containsKey(key) { Object storedValue = map.get(key); if (storedValue == null ? value == null : storedValue.equals(value)) { map.remove(key); } } 请注意,这不是线程安全的.如果从多个线程访问映射,则必须添加同步块. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |