HashSet存对象是根据其hashCode值,TreeSet似乎跟平衡二叉树有点象,学数据结构的时候知道 hash表和平衡二叉树都是为了查询,修改,删除等操作时间复杂度低,具体多少忘了,呵呵.
可是HashSet, TreeSet都只能用Iterator来顺序遍历,那如何表现出hash和二叉树的优越处呢? 比如说HashSet好象没有通过hashCode来找到对应元素的方法啊
不知道该怎么理解?
------解决方案--------------------
底层来说,HashSet是用Hash表来存储数据,而TreeSet是用二叉平衡树来存储数据。
功能上来说,由于TreeSet实现了SortedSet接口,所以是一个有序的Set,可以使用SortedSet接口的first()、last()等方法。但由于要排序,势必要影响速度,所以,如果不需要顺序的话,还是使用HashSet吧,使用Hash表存储数据的HashSet在速度上更胜一筹。
------解决方案--------------------
是的,hashset只是存储效率高。
------解决方案--------------------
hashSet hashCode && equals
TreeSet Comparable || Comparator
------解决方案--------------------
Hashset 和 TreeSet 都是用来储存数据的数据结构,Hashset高效但不带排序,TreeSet效率没Hashset高,但可以排序.....
楼主要知道他们要来干什么就得复习下数据结构......
------解决方案--------------------
to lz(ls):
那当然是不一样的了,作为Set存放在里面的元素是不会重复的,而你用数组存的话,就有可能出现重复的东西,并不是不提供随机访问方法就是Set的。
正如各位楼上所说的,HashSet是通过Hash值来存放的,TreeSet里面存放的是排序后的元素。