Set是最简单的存放数据集合,是一个接口,与list有些相似,其继承图如下:
list的继承图如下:
英文版:
从继承图可以看出,两者都实现Collection<E>接口,具有Collection<E>的属性和方法
Set是最简单的一种集合,并且没有重复数据:主要有HashSet和TreeSet两个实现类:
HashSet : HashSet类按照哈希算法来存取集合中的对象,存取速度比较快,
TreeSet : TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
1.HashSet类
- 它不允许出现重复元素;
- 不保证和政集合中元素的顺序
- 允许包含值为null的元素,但最多只能有一个null元素。
范例:
1 import java.util.Date; 2 import java.util.HashSet; 3 import java.util.Iterator; 4
5 public class HelloWord { 6 public static void main(String[] args) { 7 HashSet<Object> h = new HashSet<Object>(); 8 h.add("1st"); 9 h.add("2nd"); 10 h.add(new Integer(3)); 11 h.add(new Double(4.0)); 12 h.add("2nd"); // 重复元素,未被添加
13 h.add(new Integer(3)); // 重复元素,未被添加
14 h.add(new Date()); 15 System.out.println("开始:size=" + h.size()); 16 Iterator<Object> it = h.iterator(); 17 while (it.hasNext()) { 18 Object o = it.next(); 19 System.out.println(o); 20 } 21
22 h.remove("2nd"); 23 System.out.println("移除元素后:size=" + h.size()); 24 System.out.println(h); 25 } 26
27 }
【运行结果】:
开始:size=5
2nd
3
1st
4.0
Sun Sep 13 17:42:15 CST 2015
移除元素后:size=4
[3, 1st, 4.0, Sun Sep 13 17:42:15 CST 2015]
2.TreeSet类
TreeSet描述的是Set的一种变体——可以实现排序等功能的集合,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,并保证该集合元素组成的读取时刻按照“升序”排列。
1 package hello; 2
3 import java.util.Iterator; 4 import java.util.TreeSet; 5
6 public class HelloWord { 7 public static void main(String[] args) { 8 TreeSet<String> ts=new TreeSet<String>(); 9 ts.add("orange"); 10 ts.add("apple"); 11 ts.add("banana"); 12 ts.add("grape"); 13 ts.add("grand"); 14
15 Iterator<String> it=ts.iterator(); 16 while(it.hasNext()) 17 { 18 String fruit=it.next(); 19 System.out.println(fruit); 20 } 21 } 22
23 }
【运行结果】:
apple
banana
grand
grape
orange
说明:按首字母排序,首字母相同按下一个字母排序,依此类推