理想情况下,哪些方法必须覆盖自定义对象的集合,例如:Customer?

时间:2016-11-23 05:48:13

标签: java collections

我正在用Java学习集合,但是,有些集合很混乱。

根据我的理解,我已准备好覆盖图表。需要你的帮助来纠正它并正确理解它。

Collections table 请更正错误。

关于TreeMap的另一个问题。 我读到了TreeMap,它使用Comparator指定的自然或自定义顺序按 KEYS 对元素进行排序。但是,在某些教程中,指定它可以按值而不是键进行排序。它是正确的还是我们应该只按键排序?

更新 对不起,如果我的问题有点含糊不清。 我假设我在每个集合中放置Customer类型的自定义对象(java类)。 在键值对集合中,我使用Customer作为键。

1 个答案:

答案 0 :(得分:1)

  

对于使用自定义的集合,必须覆盖哪些方法   对象作为键,值还是元素?

没有强制要求覆盖集合类的方法。集合API提供了许多类,如List(保留元素的顺序),Set(消除了重复项) ),Map(将元素存储为键值对等)..您可以根据实际使用情况直接选择和使用它们。

  

对于TreeMap,它是正确的还是我们应该只按键排序?

TreepMap通过排序键对元素进行排序。如果您希望按值对元素进行排序,可以通过多种方式对其进行排序here

同样,没有强制要求按键或值排序Map,这取决于您的项目/业务要求。

<强>更新

  

如果我想使用Customer类的hashmap,请按照书中的说明进行操作   需要覆盖hashcode并使equals方法正常工作。

是的,对于Customer等自定义类,您需要覆盖equals()hashcode(),以便集合类知道两个Customer对象是如何相等的。例如,当您使用Set时,为了消除重复项,Set需要找到两个Customer对象如何相等,以便它只能保留一个对象。

另外,另一方面,如果您想订购元素(存储在集合中),您需要覆盖Comparator中的comparecompareTo()来自equals() 3}}

总结一下,请参阅以下基础知识:

每当需要找到对象相等时,

覆盖hashcode()compare()

覆盖compareTo()String str = ""; while ((sCurrentLine = br.readLine()) != null) { String sCurrentLine1 = sCurrentLine.replaceAll("\\n+", "0NL0"); str = str + sCurrentLine1 + " and "; } System.out.println(str.substring(0,(str.length()-5))); 以了解订购要求