Set和数学中的集合十分类似,在Java中,Set是一种绝不会包含两个相等元素的存储结构。在阅读此文前请阅读Java容器:Map

Set方法

增添方法:

  • boolean add(E e);
  • boolean addAll(Collection c);将参数容器与该Set对象做并集。

    查询方法:
  • int size();
  • boolean isEmpty();
  • boolean equals(Object o);
  • Iterator<E> iterator();对Set对象迭代需要使用迭代器。
  • boolean contains(Object o);查询集合中是否包括某个对象。
  • boolean containsAll(Collection c);查询该集合是否包括参数容器对象中所有对象。
  • Object[] toArray();
  • <T> T[] toArray(T[] a);

    删除方法:
  • boolean remove(Object o);
  • boolean removeAll(Collection c);用Set对象减去参数容器中对象,即差集,返回值用于确认集合是否改变。
  • boolean retainAll(Collection c);将参数容器与该Set对象做交集,即保留下共同内容,返回值用于确认集合是否改变。
  • void clear();

HashSet

HashSet底层用一个HashMap对象来存储内容,因此,可以说它是包装过的HashMap。也因此,HashSet和HashMap的构造函数类似,都可以使用初始容量initialCapacity和负载因子loadFactor对其初始化(对于HashSet,会在构造函数中对其所属的HashMap对象初始化)。同样的原因,对于Map中可以使用的方法,Set大多照旧。此外,由于HashMap对象的Entry需要key,value两个参数,而Set对象仅需要key参数来存储,系统会构建一个new Object()对象PRESENT来作为HashMap中Entry的value。

    private transient HashMap<E,Object> map;
private static final Object PRESENT = new Object();

可以说HashSet就是一个只用key存储的HashMap。

TreeSet

和HashSet类似,TreeSet底层也是用Map实现的,TreeSet类有两个成员对象:

    private transient NavigableMap<E,Object> m;
private static final Object PRESENT = new Object();

这里面用的NavigableMap我们学过Map后知道是TreeMap的上层接口,实际上还是一个TreeMap。

综上,在系统了解Map后学习Set,仅需要学习Set的使用即可。

Java容器:Set的更多相关文章

  1. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  2. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

  3. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  4. Java 容器(list, set, map)

    java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...

  5. Java - 容器详解

    一.ArrayList 长度可变数组,类似于c++ STL中的vector. 元素以线性方式连续存储,内部允许存放重复元素. 允许对元素进行随机的快速访问,但是向ArrayList中插入和删除元素的速 ...

  6. Java 容器:Collection 初探之 List

    1 ///: JavaBasic//com.cnblogs.pattywgm.day1//CollectionTest.java 2 3 package com.cnblogs.pattywgm.da ...

  7. java容器---集合总结

    思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...

  8. 3)Java容器

    3)Java容器   Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...

  9. JAVA容器

    JAVA容器 一.容器体系结构 java.util 二.迭代器Iterator<E> 迭代器是一种设计模式,可以遍历并选择序列中的对象,而开发人员并不需要了解该序列的底层结构.迭代器通常被 ...

  10. Java 容器相关知识全面总结

    Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...

随机推荐

  1. Android启动过程分析

    Android系统启动过程 首先看一张Android框架结构图 Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用. 启动的过程如下图所示:(图片来自网上, ...

  2. Zookeeper实现master选举

    使用场景         有一个向外提供的服务,服务必须7*24小时提供服务,不能有单点故障.所以采用集群的方式,采用master.slave的结构.一台主机多台备机.主机向外提供服务,备机负责监听主 ...

  3. 在android C/C++ native编程(ndk)中使用logcat

    最近在研究Android 2.2 源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LO ...

  4. Logistic Regression求解classification问题

    classification问题和regression问题类似,区别在于y值是一个离散值,例如binary classification,y值只取0或1. 方法来自Andrew Ng的Machine ...

  5. LoadRunner压力测试实例

    1 LoadRunner 概要介绍... 2 .项目背景介绍... 5 .使用LoadRunner进行负载/ 实施测试... 16 6.1 Memory相关... 22 6.2 Processor相关 ...

  6. ITU-T Technical Paper: 测量QoS的基本网络模型

    本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...

  7. 尽量用pass-by-reference-to-const(const引用)替换pass-by-value(传值)

    默认情况下C++以pass-by-value传递对象至函数(或从函数返回). eg1: class Person { public: Person(); virtual ~Person(); priv ...

  8. OpenCV 透视变换实例

    参考文献: http://www.cnblogs.com/self-control/archive/2013/01/18/2867022.html http://opencv-code.com/tut ...

  9. 任务管理器中的PID找不到

    PID是Process ID的简称,这对WINDOWS开发人员来说是非常有用的信息,但对于普通用户来说则根本不必去理会.   举个例子来说: 在网站发布的时候,需要安装IIS,那么iis的tcp的80 ...

  10. ARM linux常用汇编语法

    汇编语言每行的语法:     lable: instruction  ; comment 段操作: .section           格式: .section 段名 [标志]     [标志]可以 ...