我创建了一个类Person
(正如书中所说)来保存从键盘输入的一个人的姓名和姓氏,然后还有另一个类PhoneNumber
,它将一个人的国家代码、区号和号码封装为字符串
Person将用作Hashmap中的键
ClassBookEntry
封装了Person
和PhoneNumber
。许多BookEntry
对象组成了一个表示电话簿的HashMap。
Person
实现了可比性
public int compareTo(Person person) {
int result = lastName.compareTo(person.lastName);
return result==0? firstName.compareTo(person.firstName):result;
}
等于()
public boolean equals(Object anotherPerson){
return compareTo((Person)person)==0;
}
HashMap
使用equals()
而不是compareTo()
,因此您必须实现它TreeMap
使用compareTo()
。
compareTo()
方法用于排序,
这个方法的实现将决定两个人之间谁更大(更小,相同),以及在什么程度上
而等于()
作为HashMap键的用户定义类
是的你需要实现hashcode()
和equals()
正确
也看到
一些数据结构将使用compareTo
(例如TreeMap
),一些数据结构将使用equals
(例如HashMap
)。
更重要的是,强烈建议compareTo
和equals
保持一致,如Comparator
javadoc中所述:
强烈建议,但不是严格要求(x.compareTo(y)==0) == ( x.equals(y))。一般来说,任何实现可比接口并违反这一条件的类都应该清楚地表明这一事实。推荐的语言是“注意:这个类有一个与等号不一致的自然顺序。”
另一个提示,在TreeMap
javadoc(emphasis mine)中找到:
请注意,与任何排序映射一样,树映射维护的顺序,以及是否提供了显式比较器,如果此排序映射要正确实现映射接口,则必须与equals一致。
最后,如果您重写equals
,您还应该重写hashcode
,以防止在使用基于哈希的结构时出现意外行为。
问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。
本文向大家介绍什么时候用delegate,什么时候用Notification?相关面试题,主要包含被问及什么时候用delegate,什么时候用Notification?时的应答技巧和注意事项,需要的朋友参考一下 答:delegate针对one-to-one关系,并且reciever可以返回值 给sender,notification 可以针对one-to-one/many/none,recieve
问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制
我是一个Android开发的新手。什么是android.jar?我指的是https://developer.android.com/guide/platform/?nav=true并试图理解它适合哪个层。我听到了相互矛盾的意见,现在真的很困惑,考虑到我在Android方面的有限知识。谢谢!
这似乎很明显,但我发现自己有点困惑,什么时候在ES6中为导入单个模块使用花括号。例如,在我正在处理的React-Native项目中,我有以下文件及其内容: 在todoReducer.js中,我必须在没有花括号的情况下导入它: 如果将括在花括号中,则会得到以下代码行的以下错误: 无法读取未定义的属性todo 类似的错误也发生在我的带有花括号的组件上。我在想什么时候应该对单个导入使用花括号,因为很明显
问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的