规则集之探究何时使用HashSet、LinkedHashSet以及TreeSet?
前言
Java集合框架三种主要类型的集合:规则集(Set)、线性表(List)、队列(Queue)。Set用来存储不可重复的元素;List用来存储有元素构成的有序的集合;而Queue则用于存储用先进先出处理的对象。
Set接口的三个具体类包括:散列集HashSet、链式散列集LinkedHashSet、树形集TreeSet。
本章节,主要讲解何时使用HashSet、LinkedHashSet以及TreeSet较为最佳。
HashSet
HashSet可以用来存储互不相同的元素。考虑到效率的因素,添加到HashSet中的对象必须实现hashCode()方法。往HashSet中存储元素时,元素并不会按照被插入时的顺序存储,原因是因为HashSet中的元素没有特定的顺序。
如若要强制有顺序,此时,就需要LinkedHashSet上场了。如果不需要维护元素被插入的顺序,就是你使用HashSet的大好时机,因为它会比LinkedHashSet更加的高效。
LinkedHashSet
LinkedHashSet是通过用一个链表的实现来扩展HashSet,从而支持了对HashSet中的元素的排序。所以LinkedHashSet可以按照元素插入时的顺序进行提取。
TreeSet
当需要一个排好序的集合的时候,就可以从这个散列集中创建一个树形集。