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

Android一米阳光

初级黑马

  • 黑马币:34

  • 帖子:69

  • 精华:0

© Android一米阳光 初级黑马   /  2016-8-31 22:37  /  740 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

已经知道在collection集合下的Hashset要重写hashcode(),equal(),Treeset要求对象实现comparable接口,或者使用比较器.那在Map集合中,为什么重写后,好像没有用,remove方法也没有用了,什么鬼
机试应该不会这么搞的吧

11 个回复

倒序浏览
共同学习下。好好
回复 使用道具 举报
请把问题代码发上来看看
回复 使用道具 举报
Hashset要重写hashcode(),equal(),Treeset要求对象实现comparable接口,

HashSet存储的元素的类要重写hashcode(),equal()
Treeset存储的元素的类要重写comparable接口,
回复 使用道具 举报
map是两个  键和值
回复 使用道具 举报
不会吧我觉得
回复 使用道具 举报
这有可能是因为,若你在map中定义比较器时,或者在自定义类中重写equals和hashcode方法时或实现comparable接口时,对相同属性对象的比较时返回值为false或者不为0所导致的,若是这种情况可以通过map中的getKey()方法来得到存放key的集合,再使用该集合中的元素做为remove()方法的参数传入,应该就能进行删除操作了
回复 使用道具 举报 1 0
上次是写错了应该,应该选择类的一种属性作比较的,看我刚刚写的就可以用了,我使用比较器写的

无标题11.png (31.78 KB, 下载次数: 15)

无标题11.png

无标题33.png (91.58 KB, 下载次数: 9)

无标题33.png
回复 使用道具 举报
Esen 中级黑马 2016-9-1 21:36:14
9#
Collection是单列集合,他有两个常用的子接口,List和Set,List集合中的元素是有序/可重复/有索引的;而Set集合中的元素是无序/无索引/不可重复的,为了保证Set集合中元素的不可重复性,所以要重写hashcode(),equal()方法,如果集合中存储自定义引用类型数据,就需要实现comparable接口,或者使用比较器来确保元素的唯一性.Map是双列集合,一个列是键,另一列是键对应的值,他们是一对一映射关系,可以通过键找到值,其键不可以重复,但值可以重复,如果键重复该键对应的值后来者覆盖前面的;Map中的remove方法可以用来移除集合中的键值对数据
回复 使用道具 举报
Collection是单列集合,他有两个常用的子接口,List和Set,List集合中的元素是有序/可重复/有索引的;而Set集合中的元素是无序/无索引/不可重复的,为了保证Set集合中元素的不可重复性,所以要重写hashcode(),equal()方法,如果集合中存储自定义引用类型数据,就需要实现comparable接口,或者使用比较器来确保元素的唯一性.Map是双列集合,一个列是键,另一列是键对应的值,他们是一对一映射关系,可以通过键找到值,其键不可以重复,但值可以重复,如果键重复该键对应的值后来者覆盖前面的;Map中的remove方法可以用来移除集合中的键值对数据
回复 使用道具 举报
map里面和cl不一样吧
回复 使用道具 举报
感觉查不了多少,Map集合可以理解为list集合和set集合组成的,key是set集合具有元素单一性;而value是list集合元素可以重复;最多就是给list和set另起一个Collection作为相当于"父类"一样的东西
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马