笔记:
/**Set接口 及其实现类 * 公用操作同Collection: * * ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法, * * ⑤ iterator 来返回迭代器对象⑥addall() 和removeall() ,添加或者删除全部! * * ⑦ Object[] toArray() ,将集合转换为Object数组 * 1.实现类HashSet 使用哈希存储元素,高性能,没有排序!(随机存储的!) * a.构造方法: HashSet()/HashSet(Collection c); HashSet(初始容量[,装填因子]) * 2.实现类LinkedHashSet :哈希表和链表实现了Set接口,具有可预测的迭代次序; * 这种实现不同于HashSet,它维持于所有条目的运行双向链表; * 3.接口SortedSet : 有序对象的集合,集合里所有元素对象类型要求一致, * a. first()/last() * b. subset(begin,end) ,返回一个子集合, 下标左闭右开 * c.SortedSet<E> headSet/tailed(E element) ,返回一个 小于/大于element 的 SortedSet集合; * 4.接口SortedSet实现类TreeSet :使用红黑树进行操作,基于元素的值对元素排序,操作比HashSet慢! * (有序输出,数字从小到大,字符串按ASCII从小到大排序) * a.构造方法: TreeSet(collection c) ,集合中自然元素按照自然顺序(从大到小)进行排序 * b.指定排序规则: TreeSet(Comparator c) ,创建空树,按照c 的规则进行排序 * ------------------------------------ * 5.对象排序 (记到下一章去了) * a.实现Comparable 接口 * * b.比较器Comparator */
测试代码:
public class TestSet { public static void main(String[] args) { HashSet<String> s1= new HashSet<String>(); s1.add("hello");s1.add("ssdf");s1.add("dadsasd");s1.add("6666asda9");s1.add("666sada67"); TestSet.test(s1); TestSet.test(s1); ////////////////// LinkedHashSet<String> s2= new LinkedHashSet<String>(); s2.add("hello");s2.add("ssdf");s2.add("dadsasd");s2.add("6666asda9");s2.add("666sada67"); TestSet.test(s2); ///////Test TreeSet/////////// TreeSet<Integer> s3=new TreeSet<Integer>(); s3.add(34534);s3.add(345341);s3.add(345342);s3.add(34534);s3.add(34);s3.add(84); test(s3); TreeSet<String> s4=new TreeSet<String>(); s4.add("ass");s4.add("ASS");s4.add("ab");s4.add("sssssss");s4.add("SSSSSS");s4.add("zZZZ"); test(s4); } static void test(Collection s){ for(Object o:s){ System.out.print(o+" "); } System.out.println("---------->>"+s.getClass()+"---------"); } }
测试结果:
666sada67 ssdf dadsasd hello 6666asda9 ---------->>class java.util.HashSet--------- 666sada67 ssdf dadsasd hello 6666asda9 ---------->>class java.util.HashSet--------- hello ssdf dadsasd 6666asda9 666sada67 ---------->>class java.util.LinkedHashSet--------- 34 84 34534 345341 345342 ---------->>class java.util.TreeSet--------- ASS SSSSSS ab ass sssssss zZZZ ---------->>class java.util.TreeSet---------