【发布时间】:2015-08-13 12:38:09
【问题描述】:
我想从hashmap 中删除一个特定值以及该值中的键。看看,例如,如果我有
hashMap.put(cold, frozen)
hashMap.put(cold,hard)
,在我的图形界面中,我将拥有cold=[frozen,hard]。如果我想删除hard,我想留下cold = [frozen]
我的 hashMap 是private HashMap<String,ArrayList<String>> hashMap ;
这是我尝试过的,但还不够好,因为如果我在 2 个不同的键上有我想要删除的值,它只会删除第一个的值,如果我有前 cold=[frozen,hard] 并且我很难擦除它不会保持cold=[frozen];
for(String key : hashMap.keySet()){
int siz = hashMap.get(key).size();
for(int i = 0; i< siz;i++){
if(hashMap.get(key).get(i).equals(cuvant)){
s.remove(hashMap.get(key).get(i));
siz--;
hashMap.remove(key);
}
}
}
我忘了说 s 是带有值的arrayList。
【问题讨论】:
-
小提示:您可以将 Map 声明为
Map<String, List<String>> hashMap- 如果可能,您应该始终针对接口而非实现进行编程。 -
s中的s.remove(hashMap.get(key).get(i));是什么? -
对不起,我忘了提。是包含值的数组。
-
这段代码有很多问题。首先,调用
hashMap.put( "cold", "frozen")甚至都行不通。您已经创建了一个Map,其中的值是List的实例。尝试添加字符串将失败。即使它确实有效,第二次调用也只会替换地图中的现有值,而不是添加到列表中。接下来,正如另一条评论指出的那样,您有一个未定义的变量s。 -
我在放置项目时没有任何问题,因为我放置了字符串并且我的哈希映射接收一个键作为字符串和一个字符串数组作为值。我用字符串的含义编辑了我的帖子