当我们用自定义的类对象作为key时,我们必须在程序中覆盖HashCode()和equals()。

Key值既然可以作为对象,那么也可以用一个自定义的类。比如:

m.put(new sutdent(“Liucy”,30),”boss”)

如果没有语句来判定Student类对象是否相同,则会全部打印出来。

 

当我们用自定义的类对象作为key时,我们必须在程序中覆盖HashCode()equals()

 

注:HashMap底层也是用数组,HashSet底层实际上也是HashMapHashSet类中有HashMap属性(我们如何在API中查属性)。HashSet实际上为(key.null)类型的HashMap。有key值而没有value值。

 

正因为以上的原因,TreeSetTreeMap的实现也有些类似的关系。

注意:TreeSetTreeMap非常的消耗时间,因此很少使用。

我们应该熟悉各种实现类的选择——非常体现你的功底。

 

HashSet VS TreeSetHashSet非常的消耗空间,TreeSet因为有排序功能,因此资源消耗非常的高,我们应该尽量少使用,而且最好不要重复使用。

基于以上原因,我们尽可能的运用HashSet而不用TreeSet,除非必须排序。

同理:HashMap  VS  TreeMap:一般使用HashMap,排序的时候使用TreeMap

HashMap VS Hashtable(注意在这里table的第一个字母小写)之间的区别有些类似于ArrayListVectorHashtable是重量级的组件,在考虑并发的情况,对安全性要求比较高的时候使用。

 

Map的运用非常的多。

posted @ 2019-04-21 10:30  borter  阅读(339)  评论(0编辑  收藏  举报