TreeSet: 有序且保证对象的唯一,往该集合中添加元素时,要么添加的对象实现Comparable接口,并覆盖其中的compareTo方法,使添加的元素具备比较性,要么使该集合具备比较性,即创建以个比较器,即实现Comparetor接口并复写接口中的compare方法。往TreeSet集合中添加元素时,会调用compare或compareTo方法。作者: 易伟 时间: 2012-2-8 22:01
java的集合框架大致分为list、set、map,你说的hashmap和hashset都是用哈希算法计算存储位置和查找位置。
HashMap使用哈希算法来计算对象存放的区域,之所以要复写hashCode和equals方法是因为:Object中的equals方法默认和==相同,默认比较的地址值。
举个例子:Person a = new Person ("abc") Person b = new Person ("abc") ,如果person类中没有覆盖equals方法,那么a.equals(b)的结果将返回false。
所以对两个内容相同的对象,应该根据需要覆盖equals方法。复写hashCode是为了让它与equals有相同的比较结果,即两个对象equals比较相等,那么他们的
hashCode值也应该相等。
排序分为自然排序和自定义比较器排序。java中有两种实现;1:比较的对象的类必须实现comparable接口,那么该类的对象就能够进行比较,
2:实现Comparator接口,得到自己的比较器,然后把该比较器当做参数传递。