首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

奇怪的HashSet 跟变换后的TreeSet

2012-09-21 
奇怪的HashSet 和变换后的TreeSetHashSet ,作为Set集合的一个实现类,很多书中写到Set中不能存放重复的元素

奇怪的HashSet 和变换后的TreeSet

HashSet ,作为Set集合的一个实现类,很多书中写到Set中不能存放重复的元素。事实上并非如此。看下面的一个简短的例子

import java.util.*;class A implements Comparable {public int compareTo(Object o) {// 返回值为0时,表示两个对象相等不可以添加;否则添加成功return 1;}}public class TestTreeSet {public static void main(String[] args) {TreeSet<A> ts = new TreeSet<A>();A a = new A();A b = new A();// 进行添加时,调用compareTo()方法进行比较。一来判断是否重复;二来,是为了排序ts.add(a);ts.add(b);System.out.println(ts.size());}}

?

1 楼 xieyongwei 2012-03-03   第一个例子里面 ao的hascode变了,是否还可以认为是同一个对象? 2 楼 crab1 2012-03-03   xieyongwei 写道第一个例子里面 ao的hascode变了,是否还可以认为是同一个对象?

当然是同一个对象。在例子里面,只是单纯的重写了hashCode()这个方法,而对象根本就没有改变,代码中只创建了一个对象,所以只是它的hashCode变了,而表征地址的identityHashCode()方法的返回值至始至终都没有发生变化。

热点排行