栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

与集合相等且可比

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与集合相等且可比

似乎这在(粗体的)JavaDoc中有

TreeSet
很好的记录:

注意,如果要正确实现接口,则由一个集合(无论是否提供显式比较器)维护的顺序
必须与equals一致

Set
。(请参见
Comparable
Comparator
对于与equals一致的精确定义。)之所以如此,是因为
Set
接口是根据
equals
操作定义的,但是
TreeSet

实例使用其
compareTo
(或compare)方法执行所有元素比较
,因此两个元素被视为相等从集合的角度来看,此方法是相等的。
集合的行为是明确定义的,即使其顺序与equals不一致也是如此; 它只是不能遵守
Set
接口的一般约定


这是唯一实现

Comparable
但与不一致的(?)JDK类的示例
equals()

Set<BigDecimal> decimals = new HashSet<BigDecimal>();decimals.add(new BigDecimal("42"));decimals.add(new BigDecimal("42.0"));decimals.add(new BigDecimal("42.00"));System.out.println(decimals);

decimals
在最后有三个值,因为
42
42.0
并且
42.00
是不相等的,只要
equals()
关注。但是,如果将其替换
HashSet
TreeSet
,则结果集仅包含一项(
42
-刚好是第一个添加的项),因为使用进行比较时,它们都被认为是相等的
BigDecimal.compareTo()

这表明在使用与不一致的类型时

TreeSet
,这以“ 损坏 ” 的方式出现
equals()
。它仍然可以正常工作,并且所有操作都定义明确-
只是不遵守
Set
类的约定-如果两个类不是
equal()
,则它们不会被视为重复。

也可以看看

  • 比较等于等于是什么意思?如果我的课堂不遵循这一原则,可能会发生什么?


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号