Key值既然能够做为对象,那么也能够用一个自定义的类。好比:数组
m.put(new sutdent(“Liucy”,30),”boss”)安全
若是没有语句来断定Student类对象是否相同,则会所有打印出来。并发
当咱们用自定义的类对象做为key时,咱们必须在程序中覆盖HashCode()和equals()。对象
注:HashMap底层也是用数组,HashSet底层实际上也是HashMap,HashSet类中有HashMap属性(咱们如何在API中查属性)。HashSet实际上为(key.null)类型的HashMap。有key值而没有value值。排序
正由于以上的缘由,TreeSet和TreeMap的实现也有些相似的关系。资源
注意:TreeSet和TreeMap很是的消耗时间,所以不多使用。table
咱们应该熟悉各类实现类的选择——很是体现你的功底。List
HashSet VS TreeSet:HashSet很是的消耗空间,TreeSet由于有排序功能,所以资源消耗很是的高,咱们应该尽可能少使用,并且最好不要重复使用。程序
基于以上缘由,咱们尽量的运用HashSet而不用TreeSet,除非必须排序。tab
同理:HashMap VS TreeMap:通常使用HashMap,排序的时候使用TreeMap。
HashMap VS Hashtable(注意在这里table的第一个字母小写)之间的区别有些相似于ArrayList和Vector,Hashtable是重量级的组件,在考虑并发的状况,对安全性要求比较高的时候使用。
Map的运用很是的多。