读书人

Java集合类札记3:Set接口

发布时间: 2012-11-06 14:07:00 作者: rapoo

Java集合类笔记3:Set接口
1.HashSet是Set接口的典型实现,大多数使用Set集合就是使用这个实现类。HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
2.HashSet的特点:
1)不能保证元素的排列顺序
2)HashSet不是同步的,如果多个线程同时访问一个Set集合,如果多个线程同时访问一个HashSet,如果有2条或两条以上线程同时修改了HashSet集合时,必须通过代码来保证其同步。
3)集合元素可以为null。
3.当向HashSet集合存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该Hashcode值来决定该对象在HashSet中存储位置。如果两个元素通过equals方法比较返回true,但它们的hashCode()方法返回值不相同,HashSet将会把它们存储在不同位置,也就可以添加成功。
4.TestHashset.java

import java.util.*;public class TestTreeSet{public static void main(String[] args) {TreeSet nums = new TreeSet();nums.add(5);nums.add(-1);nums.add(23);nums.add(231);nums.add(-24);System.out.println(nums);System.out.println(nums.first());System.out.println(nums.last());System.out.println(nums.headSet(8));System.out.println(nums.tailSet(20));System.out.println(nums.subSet(-2,8));}}

与HashSet集合采用hash算法来决定元素的存储位置不同,TreeSet采用红黑树的数据结构对元素进行排序。TreeSet支持两种排序:自然排序和定制排序。


7.EnumSet是一个专为枚举类设计的集合类,EnumSet中所有值都必须是指定枚举类型的枚举值,该枚举类型在创建EnumSet时显式或隐式地指定。EnumSet的集合元素也是有序的,EnumSet以枚举值在Enum类内定义顺序来决定集合元素的顺序
EnumSet在内部以位向量的形式存储,这种存储形式非常紧凑、高效,因此EnumSet对象占用内存很小,而且运行效率很好,尤其进行批量操作(如调用containsAll和retainAll方法时)
EnumSet不允许加入null元素


读书人网 >编程

热点推荐