zoukankan      html  css  js  c++  java
  • hashset和treeset

    TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口,从而保证在遍历集合时按照递增的顺序获得对象。遍历对象时可能是按照自然顺序递增排列,所以存入用TreeSet类实现的Set集合的
    对象必须实现Comparable接口;也可能是按照指定比较器递增排列,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序。

    HashSet类按照哈希算法来存取对象,当向集合中加入一个新对象时,会调用对象的HashCode()方法得到对象的哈希码,然后根据这个码计算出对象在集合中存储的位置。

    java.util.Set接口
    已知子接口: SortedSet
    所有以知实现类:AbstractSet,CopyOnWriteArraySet,EnumSet,HashSet,LinkedHashSet,TreeSet

    public interface Set extends Collection
    不能包含重复元素.set不包含满足element1.equals(element2)的元素对,并且只能有一个null

    方法集同java.util.Collection

    Java.util.HashSet

    java.lang.Object
    java.util.AbstractCollection
    java.util.AbstractSet
    java.util.HashSet
    public class HashSet extends AbstractSet implements Set,Cloneable,Serializable ;
    此实现不是同步的。 如果多个线程同时访问一个集合,而其中至少一个线程修改了该集合,那么它必须保持外部同步。这通常是通过对自然封装该集合的对象执行同步操作来完成的。如果不存在这样的
    对象,则应该使用 Collections.synchronizedSet 方法来“包装”集合。最好在创建时完成这一操作,以防止对 HashSet 实例进行意外的不同步访问:
    Set s = Collections.synchronizedSet(new HashSet(...));
    构造函数:
    HashSet() 构造一个新的空集合,其底层HashMap实例的默认初始容量是16,加载因子0.75
    HashSet(Collection c) 构造一个包含指定collection中的元素的新的set
    HashSet(int initialCapacity) 构造一个新的空集合,其底层HashMap实例具有指定的初始容量和默认的加载因子.
    HashSet(int initialCapacity,float loadFactory) 构造一个新的空集合,其底层HashMap实例具有指定的初始容量和加载因子.

    其他方法同Set.

    java.util.TreeSet

    java.lang.Object
    java.util.AbstractCollection
    java.util.AbstractSet
    java.util.TreeSet
    public class TreeSet extends AbstractSet
    implements SortedSet,Cloneable,Serializable
    同步处理:
    SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
    构造函数:
    TreeSet() 构造一个新的空Set,该Set按照元素的自然顺序排序.
    TreeSet(Collection c) 构造一个新的set,包含指定的collection中的元素,这个新的set按照元素的自然顺序排列.
    TreeSet(Comparator c) 构造一个新的空set,该set 根据指定的比较器进行排序。
    TreeSet(SortedSet c) 构造一个新的set,该set所包含的元素与指定的已排序set包含的元素相同,并按照相同的顺序对元素进行排序.

    方法:(同set的不列出)
    Object clone() 返回TreeSet实例的浅表复制.
    Object first() 返回已排序set中当前的第一个(最小)元素.
    Object last() 返回已排序set中当前的最后一个(最大)元素.
    SortedSet subSet(Object fromElement,Object toElement) 返回此set的部分视图,其元素从fromElement包括到toElement(不包括).
    SortedSet tailSet(Object fromElement)返回此set的部分视图,其元素>=fromelement
    SortedSet headSet(Object toElement) 返回此set的部分视图,要求其元素小于toElement

    ex:
    package com.angel.www;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.List;
    import java.util.TreeSet;

    public class CollectionTool {
    public CollectionTool(){
    }
    public static void main(String[] args)throws Exception{
    TreeSet ts = new TreeSet();
    ts.add("dd");
    ts.add("aa");
    ts.add("cc");
    ts.add("bb");
    TreeSet anotherts = (TreeSet)ts.clone();
    Iterator it = anotherts.iterator();
    System.out.println("TreeSet:Clone方法实例");
    while(it.hasNext()){
    System.out.println(it.next());
    }
    System.out.println("TreeSet:comparator构造方法实例");
    TreeSet s = new TreeSet(new MyComparator());
    s.add("aa");
    s.add("cc");
    s.add("dd");
    s.add("bb");
    Iterator its = s.iterator();
    while(its.hasNext()){
    System.out.println(its.next());
    }
    }
    }
    class MyComparator implements Comparator{
    public int compare(Object s1,Object s2){
    String str1 = (String)s1;
    String str2 = (String)s2;
    return str1.compareTo(str2);
    }
    }
    输出:
    TreeSet:Clone方法实例
    aa
    bb
    cc
    dd
    TreeSet:comparator构造方法实例
    aa
    bb
    cc
    dd



    作者:beanmoon
    出处:http://www.cnblogs.com/beanmoon/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
    该文章也同时发布在我的独立博客中-豆月博客

  • 相关阅读:
    声明式事务
    创建索引之代码开发
    Lucene实现全文检索的流程
    9)添加对话框的按键处理消息
    8)添加一个新的非模态对话框
    7)给tab下面添加一个子非模态对话框
    6)对(5)的代码进行一下修改 但是功能不变
    5)添加一个tab
    4)创建一个简单页面
    3)为啥(2)的代码那么写的原因
  • 原文地址:https://www.cnblogs.com/beanmoon/p/2472806.html
Copyright © 2011-2022 走看看