java.util.Set,HashSet,TreeSet学习

来源:互联网 发布:淘宝产品参数是真的吗 编辑:程序博客网 时间:2024/04/30 17:56

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

 

原创粉丝点击