2
回答
java map问题请教??
注册华为云得mate10,2.9折抢先购!>>>   

如果我想删除两个map里相同的元素(差集)?执行如下三种方法,会有什么区别??结果会一致吗?

   m1.entrySet().removeAll(m2.entrySet());

 或:m1.keySet().removeAll(m2.keySet());
 或:m1.values().removeAll(m2.values());
谢谢

举报
静心天涯
发帖于4年前 2回/181阅
共有2个答案 最后回答: 4年前
public class MapRemove {


 public static void main(String []args){
 Map m1=new HashMap<String, String>();
 Map m2=new HashMap<String, String>();
 m1.put("1", "1");
 m1.put("2", "1");
 m1.put("3", "2");
 m2.put("3", "1");
 m2.put("1", "1");
 m2.put("4", "1");
 
 m1.entrySet().removeAll(m2.entrySet());//  A
 //m1.keySet().removeAll(m2.keySet());  //  B
 //m1.values().removeAll(m2.values());  //  C
 for(Object o:m1.keySet()){
 System.out.println(o+":"+m1.get(o));
 }
 System.out.println();
 for(Object o:m2.keySet()){
 System.out.println(o+":"+m2.get(o));
 }
 }
}
A 输出                                                                           3:2
2:1


3:1
1:1
4:1
B 输出                                                                           2:1

 3:1
 1:1
 4:1
C 输出                                                                           3:2

 3:1
 1:1
 4:1
--- 共有 1 条评论 ---
静心天涯尽管我自己也敲了一篇来验证一下,不过还是很感谢你。感谢你愿意花时间去敲这一段代码 4年前 回复

1、- -试一下呀,就知道结果是否一致了。

2、不过你搞map,你弄set的removeAll干啥

3、你这个没有一个方法是在用map的删除操作

--- 共有 5 条评论 ---
静心天涯没有,可能我表述的问题,我想表达不是这个。我是想说map和collection的批量操作都遵循这样的用法,(*^__^*) 嘻嘻……或许你是对的 4年前 回复
专业打酱油回复 @静心天涯 : map里面哪有removeall方法呀?难道我的api已经过时了么 4年前 回复
专业打酱油回复 @静心天涯 : 视图和视图方法是什么东西 4年前 回复
静心天涯其实map的操作和collection的操作很类似,在map里也也是有removeAll的方法的,只不过这两种操作 会在视图方法里混着来用 4年前 回复
静心天涯Map的Collection视图返回的不就是一个Set对象吗?? 4年前 回复
顶部