A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马儿不吃草 中级黑马   /  2016-4-19 22:51  /  4937 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
map 中有{张三=3,李四=7,王五=9,刘六=5,田七=7,周七=3}这些元素,将map中value值相同的元素从该map集合中去掉

12 个回复

倒序浏览
菊花爆满山 来自手机 中级黑马 2016-4-20 00:54:51
沙发
是相同的值两个都删除,还是只删除重复的那一个
回复 使用道具 举报
重写hashcode方法equals方法
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 //创建集合,此处用LinkedHashMap是为了让添加的顺序与读取出的顺序一致
  3.                 Map<String,Integer> map=new LinkedHashMap<String,Integer>();
  4.                 //添加数据
  5.                 map.put("张三", 3);
  6.                 map.put("李四", 7);
  7.                 map.put("王五", 9);
  8.                 map.put("刘六", 5);
  9.                 map.put("田七", 7);
  10.                 map.put("周七", 3);
  11.                 //遍历数据
  12.                 for(Map.Entry<String, Integer> e:map.entrySet()){
  13.                         String key=e.getKey();
  14.                         Integer value=e.getValue();
  15.                         System.out.println("key:"+key+"\tvalue"+value);
  16.                 }
  17.                 System.out.println("-----华丽的分隔线-----");
  18.                 //创建一个set集合,利用它的元素唯一特性
  19.                 Set<Integer> set=new HashSet<Integer>();
  20.                 //遍历map集合
  21.                 Iterator<Entry<String, Integer>> it=map.entrySet().iterator();
  22.                 while(it.hasNext()){
  23.                         Entry<String, Integer> e=it.next();
  24.                         String key=e.getKey();
  25.                         Integer value=e.getValue();
  26.                         //关键操作
  27.                         if(!set.add(value)){//如果添加value不成功,说明重复了
  28.                                 //从map中删除该条记录
  29.                                 it.remove();
  30.                         }
  31.                 }
  32.                
  33.                 //遍历数据
  34.                                 for(Map.Entry<String, Integer> e:map.entrySet()){
  35.                                         String key=e.getKey();
  36.                                         Integer value=e.getValue();
  37.                                         System.out.println("key:"+key+"\tvalue"+value);
  38.                                 }
  39.         }
复制代码
回复 使用道具 举报
在创建人类的时候添加hashcode方法equals方法
回复 使用道具 举报

相同的值都删了,昨天参加点招面试就没上论坛
回复 使用道具 举报
nc11111 发表于 2016-4-21 19:03
在创建人类的时候添加hashcode方法equals方法

没有人类
回复 使用道具 举报

不理解你的意思,请说明"人类"的用处。
是在map中存储Person对象吗?
那map中的键值对的泛型是什么?
回复 使用道具 举报
菊花爆满山 发表于 2016-4-20 00:54
是相同的值两个都删除,还是只删除重复的那一个

相同的都删了
回复 使用道具 举报
_eight_brother 发表于 2016-4-22 16:41
不理解你的意思,请说明"人类"的用处。
是在map中存储Person对象吗?
那map中的键值对的泛型是什么? ...

不是,泛型就是<String,Integer>
回复 使用道具 举报
ssx337125845 来自手机 中级黑马 2016-4-22 22:58:13
11#
clear一下就好了
回复 使用道具 举报
map集合只针对建有效,通过建remove值
回复 使用道具 举报
遍历Map 通过键找值对象在equals 两个的值是不是相等,相等就删掉
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马