Set不能包含重复的元素。有三个通用的set接口的实现:HashSet、TreeSet和LinkedHashSet。什么时候用以及用哪个是一个重要的问题。总体来说,如果要一个快速的集合,就用HashSet,如果用有序集合,就用TreeSet,如果要一个集合存储插入顺序,就用LinkedHashSet
1、Set接口
Set接口是对Collection的继承。集合中,不允许有重复的元素,集合中的每个元素都是惟一的。你可以添加元素到集合中,重复的会自动删除。
2、HashSet、TreeSet和LinkedHashSet
HashSet是用哈希表实现的,元素是无序的,add,remove和contains方法时间复杂度为O(1)
TreeSet是用红黑树实现的。集合中的元素是有序的,但是add,remove和contains方法时间复杂度O(lgn)。同时提供了几中方法处理有序集合,如first(),last(),headSet()和tailSet()
LinkedHashSet介于HashSet和TreeSet之间。是用LinkedList实现的哈希表。
3、TreeSet的例子
TreeSet<Integer> tree = new TreeSet<Integer>();
tree.add(12);
tree.add(63);
tree.add(34);
tree.add(45);
Iterator<Integer> iterator = tree.iterator();
System.out.print("Tree set data: ");
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
输出为:
Tree set data: 12 34 45 63