黑马程序员技术交流社区

标题: 集合问题 [打印本页]

作者: Android一米阳光    时间: 2016-8-31 22:37
标题: 集合问题
已经知道在collection集合下的Hashset要重写hashcode(),equal(),Treeset要求对象实现comparable接口,或者使用比较器.那在Map集合中,为什么重写后,好像没有用,remove方法也没有用了,什么鬼
机试应该不会这么搞的吧
作者: 小超超    时间: 2016-8-31 23:01
共同学习下。好好
作者: zhangsen89    时间: 2016-9-1 13:40
请把问题代码发上来看看
作者: fengjunzixian    时间: 2016-9-1 16:53
Hashset要重写hashcode(),equal(),Treeset要求对象实现comparable接口,

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

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

无标题11.png

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

无标题33.png

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2