HashSet<E>泛型类在数据组织上类似于数学上的集合,可以进行“交”“并”“差“等运算。HashSet<E>泛型类实现了泛型接口Set<E>,而Set<E> 接口是Collection<E>接口的子接口。HashSet<E>类中的绝大部分方法都是接口方法的实现。编程时,可以使用接口回调技术,即把HashSet<E>对象的引用赋值给Collection<E>接口变量或Set<E>接口变量,那么接口就可以调用类实现的接口方法

 HashSet<E>泛型类 

HashSet<E>泛型类创建的对象称为集合,如
HashSet < String> set = HashSet < String >();
那么set就是一个可以存储String类型数据的集合,set可以调用add (String s)方法将String 类型的数据添加到集合中,添加到集合中的数据称作集合的元素。集合不允许有相同的元素, 也就是说,如果b已经是集合中的元素,那么再执行set.add(b)操作是无效的。集合对象的初始容量是16字节,装载因子是0.75,也就是说,如果集合添加的元素超过总容量的75%时, 集合的容量将增加一倍。

常用方法
HashSet<E>泛型类的常用方法如下。
public boolean add(E o);向集合添加参数指定的元素。

public void clear():清空集合,使集合不含有任何元素。

public boolean contains(Object o):判断参数指定的数据是否属于集合

public boolean isEmpty():判断集合是否为空

public boolean remove(Object o):集合删除参数指定的元素

public int size():返回集合元素的个数

Object[] toArray():将集合元素存放到数组中,并返回这个数组

boolean containsAll(HanshSet set):判断当前集合是否包含参数指定的集合。
public Object clone():得到当前集合的一个克隆对象,该对象中元素的改变不会影响到当前集合中的元素,反之亦然。
可以借助泛型类Iterator<E>实现遍历集合,一个集合对象可以使用iterator()方法返回 一个Iterator<E>类型的对象。如果集合是Student类型的集合,即集合中的元素是Student类创建的对象,那么该集合使用iterator()方法返回一个Iterator<Student>类型的对象,该对象使用next()方法遍
历集合。

我们把学生的成绩存放在一个集合中,并实现了遍历集合。

import java.util.*;
class Student{String name;int score;Student(String name,int score){this.name=name;this.score=score;}
}public class E13_11 {public static void main(String[] args) {// TODO Auto-generated method stubStudent zh = new Student("小美",99),wa = new Student("小哇",78),li = new Student("小李",67);HashSet<Student>set = new HashSet<Student>();HashSet<Student>subset = new HashSet<Student>();set.add(zh);set.add(wa);set.add(li);subset.add(wa);subset.add(li);//public boolean contains(Object o):判断参数指定的数据是否属于集合if(set.contains(wa)) {System.out.println("集合set中含有:"+wa.name);}if(set.containsAll(subset)) {System.out.println("集合set包含集合subset");}int number = subset.size();System.out.println("集合subset含有"+number+"个元素");Object s[]=subset.toArray();//Object[] toArray():将集合元素存放到数组中,并返回这个数组。for(int i=0;i<s.length;i++) {System.out.printf("姓名:%s,分数:%d\n",((Student)s[i]).name,((Student)s[i]).score);}number = set.size();System.out.println("集合set中有"+number+"个元素:");Iterator<Student>iter = set.iterator();while(iter.hasNext()) {Student te = iter.next();System.out.printf("姓名:%s,分数:%d\\n",te.name,te.score);}}}

运行结果:

集合set中含有:小哇
集合set包含集合subset
集合subset含有2个元素
姓名:小李,分数:67
姓名:小哇,分数:78
集合set中有3个元素:
姓名:小李,分数:67\n姓名:小美,分数:99\n姓名:小哇,分数:78\n


集合的交,并与差

集合对象调用 boolean retainAll (HashSet set)方法可以与参数指定的集合求交运算,使得当前集合成为两个集合的
集合对象调用boolean addAll(HashSet set)方法可以与参数指定的集合求并运算,使得当前集合成为两个集合的并。
集合对象调用boolean removeAll (HashSet set)方法可以与参数指定的集合求差运算,使得当前集合成为两个集合的差。
参数指定的集合必须与当前集合是同种类型的集合,否则上述方法返回false。

求两个集合A、B的对称差集合,即求A-B 与B-A的合集。

import java.util.*;
public class E13_12 {public static void main(String[] args) {// TODO Auto-generated method stubHashSet<Integer>A = new HashSet<Integer>(),B = new HashSet<Integer>();for(int i=1 ; i<=4; i++) {A.add(i);}B.add(1);B.add(2);B.add(5);B.add(6);HashSet<Integer>tempSet = (HashSet<Integer>)A.clone();A.removeAll(B); //A变成调用该方法之前的集合A与集合B的差集B.removeAll(tempSet); //B变成调用该方法之前的集合B与集合tempSet的差集B.addAll(A); //B就是最初的A与B的对称差int number = B.size(); System.out.println("A和B的对称差集合有"+number+"个元素");Iterator<?> iter = B.iterator();while(iter.hasNext()) {System.out.printf("%d,",iter.next());}}
}

运行结果:

A和B的对称差集合有4个元素
3,4,5,6,


1,使用“class名称<泛型列表>"声明一个泛型类,当使用泛型类声明对象时,必须用具体类型(不能是基本数据类型)替换泛型列表中的泛型。
2. LinkedList <E>泛型类创建的对象以链表结构存储数据,链表是由若干个被称为结点对象组成的一种数据结构,每个结点含有一个数据以及上一个结点的引用和下一个结点的引用
3. Stack < E>泛型类创建一个堆栈对象,堆栈把第一个放入该堆栈的数据放在最底下,而把后续放入的数据放在已有数据的上面,堆栈总是在顶端进行数据的输入/输出操作
4. HashMap <K,V>泛型类创建散列映射,散列映射采用散列表结构存储数据,用于存储键/值数据对,允许把任何数量的键/值数据对存储在一起。使用散列映射存储经常需要检索的数据,可以减少检索的开销。
5. TreeSet < E>类创建树集,树集结点的排列和链表不同,不按添加的先后顺序排列,当一个树集中的数据是实现Comparable接口类创建的对象时,结点将按对象的大小关系升序
6. TreeMap <K,V>类创建树映射,树映射的结点存储“键/值”对,和树集不同的是,树映排列。射保证结点是按照结点中的“键”升序排列

集合及集合的交,并与差相关推荐

  1. Generics的方法参数,Set 两集合进行并、交、差

    一.利用Generic方法参数,对两个集合进行并,交,差,并-交 1.union 并:1>在方法体增加一个集合,构造函数的初始化数据,用方法里传过来的集合. 2>再加一个集合addAll( ...

  2. python特效集合_python 集合操作方法详解

    说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球 的人都有哪些? play_basketball = ['a','b','c','d','e'] pl ...

  3. p39 8.由以下三个集合,集合成员分别是会Python、C、Java的人员。

    p39 8.由以下三个集合,集合成员分别是会Python.C.Java的人员. PythonSet={'王海','李黎明','王铭年','李晗'} CSet={'朱佳','李黎明','王铭年','杨鹏 ...

  4. Sql中的并(UNION)、交(INTERSECT)、差(minus)、除去(EXCEPT)详解

    限制条件 (1)所有查询中的列数和列的顺序必须相同. (2)比较的两个查询结果集中的列数据类型可以不同但必须兼容. (3)比较的两个查询结果集中不能包含不可比较的数据类型(xml.text.ntext ...

  5. Java学习笔记17:Java_Set集合_TreeSet集合_二叉树_HashSet集合

    文章目录 1.Set集合 1.1Set集合概述和特点[应用] 1.2Set集合的使用[应用] 2.TreeSet集合 2.1TreeSet集合概述和特点[应用] 2.2TreeSet集合基本使用[应用 ...

  6. Java学习笔记18:Java_Map集合_HashMap集合_可变参数_Stream流_多线程_线程同步_生产者消费者

    文章目录 1.Map集合 1.1Map集合概述和特点[理解] 1.2Map集合的基本功能[应用] 1.3Map集合的获取功能[应用] 1.4Map集合的遍历(方式1)[应用] 1.5Map集合的遍历( ...

  7. 集合 —— 集合与集合运算

    [概述] 集合,是集合论中主要研究对象,是指具有某种特定性质的具体的或抽象的对象汇总而成的集体,其中,构成集合的这些对象则称为该集合的元素. 集合中元素的数目称为集合的基数,集合 A 的基数记作:ca ...

  8. 由浅入深理解java集合(二)——集合 Set

    2019独角兽企业重金招聘Python工程师标准>>> 一.HashSet类 HashSet是Set接口的典型实现,实现了Set接口中的所有方法,并没有添加额外的方法,大多数时候使用 ...

  9. 【Groovy】map 集合 ( map 集合操作符重载 | 使用 << 操作符添加一个元素 | 代码示例 )

    文章目录 一.使用 " << " 操作符添加一个元素 二.代码示例 一.使用 " << " 操作符添加一个元素 对 map 集合 使用 ...

最新文章

  1. Tomcat多实例和负载均衡
  2. C#中将DLL文件打包到EXE文件
  3. [伤了昨天的心 裂成碎片和沙一起飞]五香里脊
  4. QDialog常用理解
  5. 基于随机响应机制的本地差分隐私【谷歌】论文笔记
  6. POJ 1154题解,此题不难理解方法就是DFS,属于水题。不过有一些细节要注意。...
  7. 20200707每日一句
  8. pyecharts查看版本_pyecharts的版本问题
  9. Cplex20.1版本bin包Linux安装过程
  10. python 共享内存 c_如何在python和C/C++中使用共享内存
  11. C#窗体设计中InitializeComponent的用法
  12. 程序猿生存指南-7 相亲之路(下)
  13. java项目大鱼吃小鱼
  14. 聊聊微服务架构中的多级缓存设计
  15. Android用命令行查看手机架构
  16. 【雅虎2017】一个在线展示广告的CVR预估框架实践
  17. 新能源汽车数据/新能源汽车销售数据/进出口数据
  18. 车牌识别之二:字符分割
  19. 图片相似度计算:深入理解DCT变换以及感知哈希
  20. 为了后端掌握的粗浅前端

热门文章

  1. JSONArray转字符串数组
  2. Elastic 7.14.0 版推出业界首个免费开放的 Limitless XDR
  3. 把大脑从衰老的身体里分离出来?“长寿科技”让人类活200年不再遥远
  4. 区块链技术系列(3)- Fabric基础架构原理
  5. VTK:频域处理——低通滤波(理想+巴特沃斯)
  6. 【ol-cesium】OpenLayers与Cesium的二三维联动
  7. 华为2017暑期实习生面试体会
  8. 排序算法-6-归并排序
  9. (旧文重贴)昨夜看了严宏的《java与模式》
  10. KnockoutJs 进阶学习