`

java.util.Set,HashSet,TreeSet学习

阅读更多
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
分享到:
评论

相关推荐

    java.util包

    1. 集合框架:Java.util包是Java集合框架的基础,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。这些集合类为存储和操作对象提供了灵活的方式。例如,ArrayList实现了...

    java.util包总结

    Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...

    30个常用java工具类

    11. **`java.util.HashSet`** 和 **`java.util.TreeSet`**:两种不同的Set实现,`HashSet`无序且不允许重复元素;`TreeSet`有序,支持自然排序或定制排序。 12. **`java.util.HashMap`** 和 **`java.util.TreeMap`*...

    java工具类

    16. **`java.util.HashSet`** 和 **`java.util.TreeSet`**:两种不同的集合并实现,`HashSet`基于哈希表,`TreeSet`基于红黑树,保证元素有序。 17. **`java.util.HashMap`** 和 **`java.util.TreeMap`**:两种不同...

    java.util.Collection源码分析与深度理解

    Java.util.Collection是Java集合框架中的核心接口,它是所有单值集合的父接口,定义了集合的基本操作,如添加元素、删除元素、遍历元素等。Collection接口继承了Iterable接口,这意味着可以通过for-each循环来遍历...

    数据结构源码

    8. **集合(Set)**:集合不包含重复元素,Java提供了`java.util.Set`接口和多种实现,如`java.util.HashSet`和`java.util.TreeSet`。 9. **列表(List)**:列表允许元素重复,且保持元素顺序,如`java.util....

    Java6 API 中文

    `java.util.HashSet`和`java.util.TreeSet`分别是无序和有序的集实现,而`java.util.HashMap`和`java.util.TreeMap`则用于存储键值对。 3. **多线程**:Java 6 API中的`java.lang.Thread`类和`java.util.concurrent...

    java常用工具类

    7. **`java.util.HashSet` 和 `java.util.TreeSet`**:这两个类实现了Set接口,`HashSet`基于哈希表,`TreeSet`基于红黑树,它们的区别在于元素的存储方式和排序特性。 8. **`java.util.Scanner`**:用于从输入流...

    java.util源码-JavaUtility-SourceCode:JavaUtility-SourceCode

    `HashSet`、`TreeSet`实现了`Set`接口,提供无序和有序的不重复元素集合;`HashMap`、`TreeMap`则实现了`Map`接口,用于存储键值对。 2. 队列与栈:`Queue`接口表示一个先进先出(FIFO)的容器,`LinkedList`可以...

    java数据结构源码

    9. 集合框架:Java集合框架包括接口(如List、Set、Map)和实现(如ArrayList、HashSet、HashMap),为数据存储和操作提供了一致的API。 10. 并查集:并查集用于维护一组不相交集合的合并与查询操作,常用于求解...

    Java常用类库

    2. **集合框架**:`java.util`包下的集合框架是Java编程的重要部分,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。此外,`java.util.concurrent`包中的并发集合类...

    java1.6.api

    2. **集合框架**:Java 1.6引入了完善的集合框架,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口及其实现类。这些接口和类提供了高效的数据存储和操作方法。 ...

    java工具类 java开发助手 java util

    1. 集合框架:Java中的集合框架是`java.util`包的核心,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。它们提供了存储和操作对象的基本功能,支持动态扩展和多种操作,如...

    javaapi.zip

    2. **集合框架**:Java API 中的集合框架是数据结构和算法的重要实现,包括 List(如 ArrayList 和 LinkedList)、Set(如 HashSet 和 TreeSet)和 Map(如 HashMap 和 TreeMap)。这些接口和类使得数据组织和操作变...

    Java1.8API

    2. **集合框架**:在`java.util`包中,集合框架是Java 1.8的重要特性之一,包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)、Map(如HashMap、TreeMap)等接口和实现类。Java 8引入了新的集合接口...

    java数据结构

    7. **树**:在Java中,树数据结构主要用于搜索和排序,如二叉搜索树(`java.util.TreeMap`或`java.util.TreeSet`)。平衡树如AVL树和红黑树可以保持树的高度平衡,提高查找效率。 8. **图**:用于表示对象之间的...

    Java util

    Java util是Java编程语言中的一个核心包,包含了各种通用的工具类,对于任何Java开发者来说,理解和掌握这个包中的类和方法都是非常基础且重要的。在Java的util包中,我们可以找到许多用于处理集合、日期时间、...

    Java数据结构和算法.rar

    Java的`java.util.TreeSet`和`java.util.TreeMap`实现了红黑树。 8. **图**:图由节点和边组成,用于表示对象之间的复杂关系。图的遍历算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。 9. **哈希表**:哈希表...

    java 不重复的随机数序列

    以下将详细介绍如何在Java中实现这一功能,并结合提供的`RandomSort.java`源代码文件和可能的图像资料`Java.jpg`(可能表示程序运行示例或流程图)进行讲解。 首先,生成不重复随机数的基本思路有两种:一种是使用...

Global site tag (gtag.js) - Google Analytics