Set接口的实现类HashSet和TreeSet的区别
2017-04-07 15:10
441 查看
Set接口有两个实现类HashSet和TreeSet。Set是集合的意思,这个接口实现类的特点是集合中不含有重复元素,例如向Set中插入1,1,2,3,这四个数后再输出结果是1,2,3因为Set中重复插入的1被舍弃掉了。HashSet和TreeSet的不同就在于如何判断两个数是否相同的方法上。TreeSet判断两个对象是否相同的方法是Comparable接口中的compareTo()方法(public void int compareTo(Object o)方法不仅可以比较是否相等,还可以比较大小,如果相等则返回0,调用者大于参数则返回正数,否则返回负数),而HashSet用的则是继承自Object类的equals()方法(public
boolean equals(Object o)方法只可以比较是否相等,相等返回true,反之返回false)。所以可以得到添加到TreeSet中的对象必须实现Comparable接口。同时如果使用HashSet则最好重写equals()方法。另外Set集合的输出顺序与输入顺序无关,但是TreeSet由于使用compareTo()方法来进行比较,所以TreeSet集合输出的时候会按照升序的顺序输出存在集合中的对象,下面附上一个演示代码
boolean equals(Object o)方法只可以比较是否相等,相等返回true,反之返回false)。所以可以得到添加到TreeSet中的对象必须实现Comparable接口。同时如果使用HashSet则最好重写equals()方法。另外Set集合的输出顺序与输入顺序无关,但是TreeSet由于使用compareTo()方法来进行比较,所以TreeSet集合输出的时候会按照升序的顺序输出存在集合中的对象,下面附上一个演示代码
import java.util.HashSet; import java.util.Set; import java.util.TreeSet; public class TestSet { public static void main(String [] args) { Set<Integer> hashSet = new HashSet<Integer>(); Set<Integer> treeSet = new TreeSet<Integer>(); hashSet = fillSet(hashSet); System.out.println(hashSet); treeSet = fillSet(treeSet); System.out.println(treeSet); } public static Set<Integer> fillSet(Set<Integer> set) { while(set.size() < 7) { set.add((int)(Math.random()*35+1)); } return set; } }
相关文章推荐
- JavaSE入门学习36:Java集合框架之Set接口及其实现类HashSet和TreeSet
- set集合 HashSet: TreeSet实现Comparable接口,覆盖compareTo方法。 类实现Comparator接口,覆盖compare方法。
- Set下面HashSet,TreeSet和LinkedHashSet的区别
- Set接口及其实现类——HashSet
- Java集合源码学习(10)_Set接口的实现HashSet
- Set接口(Set接口简介、HashSet集合、TreeSet集合 )
- Set接口下的 HashSet, LinkedHashSet, TreeSet
- Java数据结构与算法之数据结构-逻辑结构-集合(七)------集合之Set接口和HashSet和TreeSet、LinkedHashSet实现类总结
- A:LinkedList实现了List接口; B: AbstractSet实现了Set接口; C: HashSet继承自AbstractSet基类; D: WeakMap继承自 AbstractMap
- A:LinkedList实现了List接口; B: AbstractSet实现了Set接口; C: HashSet继承自AbstractSet基类; D: WeakMap继承自 AbstractMap
- 17.集合Set,HashSet,TreeSet及其底层实现HashMap和红黑树;Collection总结
- java(20130802)Set:HashSet TreeSet、Map(接口):HashTable Hashmap、比较list set map
- Set接口之HashSet、TreeSet、EnumSet
- 【Java集合之Set】HashSet、TreeSet、LinkedHashSet区别
- java的集合中的Set以及set的实现类HashSet和TreeSet
- 小东吖 之 java Set接口 HashSet集合 TreeSet集合
- Set接口——HashSet和TreeSet
- Set接口及其实现类hashSet
- set中hashset,linkedset以及Treeset的区别
- Java集合源码学习(11)_Set接口的实现LinkedHashSet