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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

如果没有语句来判定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的运用非常的多。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄