首先,最重要的,就是有序。数据库
SortedSet继承自Set,他根据对象的比较顺序(能够是天然顺序,也能够是自定义的顺序),而不是插入顺序进行排序;code
LinkedHashSet,维护的是插入时的顺序;对象
TreeSet是SortedSet的惟一实现类,红黑树实现,树形结构,它的本质能够理解为是有序,无重复的元素的集合。排序
由于都是有序的,因此相应的就有get,remove和add方法。继承
HashSet,看他的源码能够知道,他的底层,是hashmaprem
一段别人总结的话:get
TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不容许放入null值。 源码
二、HashSet 是哈希表实现的,HashSet中的数据是无序的,能够放入null,但只能放入一个null,二者中的值都不能重复,就如数据库中惟一约束。 hash
三、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码做为标识的,而具备相同内容的 String对象,hashcode是同样,因此放入的内容不能重复。可是同一个类的对象能够放入不一样的实例 。hashmap