Set 接口—— HashSet 和 TreeSet
作者: zccst
1. 接口实现类 HashSet
java.util.HashSet 类实现了 java.util.Set 接口。
即 HashSet 是实现了 Set 接口的 hash table (哈希表),描述典型的 Set 集合结构
HashSet 中不允许出现重复元素,不保证集合中元素的位置。
HashSet 中允许包含值为 null 的元素,但最多只能有一个 null 元素。
例如: TestHashSet.java
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
public class TestHashSet{
public static void main(String[] args) {
HashSet h = new HashSet();
h.add("1st");
h.add("2nd");
h.add(new Integer(3));
h.add(new Double(4.0));
h.add("2nd"); // 重复元素 , 未被加入
h.add(new Integer(3)); // 重复元素 , 未被加入
h.add(new Date());
System.out.println(" 开始 : size=" + h.size());
Iterator it = h.iterator();
while(it.hasNext()){
Object o = it.next();
System.out.println(o);
}
h.remove("2nd");
System.out.println(" 移除元素后 : size=" + h.size());
System.out.println(h);
}
}
输出结果:
开始 : size=5
2nd
Sun Dec 27 19:07:21 CST 2009
3
1st
4.0
移除元素后 : size=4
[Sun Dec 27 19:07:21 CST 2009, 3, 1st, 4.0]
2. 接口实现类 TreeSet
java.util.TreeSet 类也实现了 java.util.Set 接口。
它描述的是 Set 的一种变体,可以实现排序功能的集合。
在将对元素添加到 TreeSet 集中时会自动按照某种比较规则将其插入到有序的对象列中,以保证 TreeSet 集合元素组成的对象序列时刻按照“升序”排列。
TreeSet 的执行效率要比 HashSet 低,因为 TreeSet 是有序的集合。
例如:
import java.util.TreeSet;
import java.util.Iterator;
public class TestTreeSet{
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add("orange");
ts.add("banana");
ts.add("apple");
ts.add("grape");
Iterator it = ts.iterator();
while(it.hasNext()){
String fruit = (String)it.next();
System.out.println(fruit);
}
}
}
输出结果:
apple
banana
grape
orange