先说下hashset:
由于hashset里面元素的位置是通过元素的哈希值来决定的,所以hashset不具备排序的功能
且hashset可以放入null,但是只能放入一个null
hashset不是同步的
hashset是不能重复放入元素的,它的比较标准是调用该对象的equals方法,然后在调用其hashcode方法,所以要比较对象,应该重写对象对应类的equals方法以及hashcode方法
再说treeset:
treeset可以保证放入的元素是有序的,treeset判断是否重复的标准是调用equals方法以及compareTo方法
treeset的排序分为自然排序和定制排序,自然排序调用对象的compareTo方法 定制排序使用compare(T o1,T o2)
总结一下他们的特点:
1、TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值
2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null
3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例