Set接口

1.概述:

Set接口继承Collection接口;

2.Set接口常用实现类:

⑴HashSet

a.实现了 Set 接口

b.“它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变”

c.允许使用 null 元素

⑵LinkedHashSet

a.HashSet的子类

b.由于该实现类对象维护着一个运行于所有元素的双重链接列表,由于该链接列表定义了迭代顺序,所以在遍历该实现类集合时按照元素的插入顺序进行遍历

⑶TreeSet

a.既实现Set接口,同时也实现了SortedSet接口,具有排序功能

b.存入TreeSet中的对象元素需要实现Comparable接口

注:存入该实现类对象中的元素是无序的,即在遍历该集合元素时,遍历出的元素顺序未必和向集合中添加元素的顺序一致;这次遍历出来的顺序未必和上一次遍历出来的元素顺序一致;

Set接口常用方法

常用方法

1.add(Object obj):向Set集合中添加元素,添加成功返回true,否则返回false

2.size() :返回Set集合中的元素个数

3.remove(Object  obj) : 删除Set集合中的元素,删除成功返回true,否则返回false。

4.isEmpty() :如果Set不包含元素,则返回 true ,否则返回false

5.clear() : 移除此Set中的所有元素

6.iterator() :返回在此Set中的元素上进行迭代的迭代器

7.contains(Object o):如果Set包含指定的元素,则返回 true,否则返回false

以HashSet实现类为例演示Set接口方法:

Set接口方法演示

1.add(Object o):向Set集合中添加元素,不允许添加重复数据。当且仅当Set集合中没有包含满足(o==null ? e==null : o.equals(e))条件的元素e时才能将元素o添加到集合中。

size() :返回Set集合中的元素个数

注:

蓝框:向集合中添加元素

红框:获取集合中元素的个数

2.remove(Object o) : 删除Set集合中的obj对象,删除成功返回true,否则返回false。当且仅当Set集合中包含满足(o==null ? e==null : o.equals(e))条件的元素e时才能返回true。

isEmpty() :如果Set不包含元素,则返回 true

注:

红框:判断集合中是否包含元素

蓝框:删除集合中元素值为“小马”的字符串

3.clear() : 移除此Set中的所有元素

注:清除集合中所有元素

4.iterator() :返回在此Set中的元素上进行迭代的迭代器

注:借助iterator方法遍历Set集合

5.加强for循环遍历Set集合

注意

1.Set集合没有提供get方法,所以对Set集合的遍历只能通过加强for循环和迭代器进行遍历

contains(Object o):判断集合中是否包含obj元素。当且仅当Set集合中包含满足(o==null ? e==null : o.equals(e))条件的元素e时才返回true。

注:判断集合中是否包含“小张”字符串

HashSet集合

1.使用HashSet存储自定义类对象时,可以在自定义类中重写equals和hashCode方法避免“真实”对象被多次存入,主要原因是集合内不允许有重复的数据元素,在集合校验元素的有效性时(数据元素不可重复),需要调用equals和hashCode验证。

2.HashSet集合对象如何判断数据元素是否重复:

检查待存对象hashCode值是否与集合中已有元素对象hashCode值相同,如果hashCode不同则表示不重复, 如果  hashCode相同再调用equals方法进一步检查,equals返回真表示重复,否则表示不重复。

TreeSet集合

TreeSet是一个有序集合,其元素按照升序排列,默认是按照自然顺序排列,也就是说TreeSet中的对象元素需要实现Comparable接口。

TreeSet虽然是有序的,但是并没有具体的索引,当插入一个新的数据元素的时候,TreeSet中原有的数据元素可能需要重新排序,所以TreeSet插入和删除数据元素的效率较低。

注:

红框:实现了Comparable接口,如果该类不实现该接口,则将Student对象存入TreeSet集合后运行程序会出异常

蓝框:实现了Comparable接口中的抽象方法

注:TreeSet使用compareTo方法对所有元素进行比较,如果返回0则认为两个元素就是相同的

Java:Set接口相关推荐

  1. java 清空控制台_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用

    在H2数据库引擎中获取代码执行权限的技术早已是众所周知,但有个要求就是H2能够动态编译Java代码.而本文将向大家展示以前没有公开过的利用H2的方法,并且无需使用Java编译器,即通过原生库和JNI( ...

  2. java多线程查询_利用Java函数式接口处理多线程查询

    Java函数式接口 有且只有一个抽象方法的接口被称为函数式接口. @FunctionalInterface注解: 该注解可用于一个接口的定义上, 一旦使用该注解来定义接口, 编译器将会强制检查该接口是 ...

  3. java滥用接口_吐槽一下项目中的代码坏味道:滥用java常量

    我们的项目中是否充斥着类似以下的代码呢?定义一个专门存放常量的java类(接口),非常多其它类依赖该常量类. public interface IConstant { int ZERO = 0; St ...

  4. java接口与类相同不同_浅谈java的接口和C++虚类的相同和不同之处

    C++虚类相当于java中的抽象类,与接口的不同之处是: 1.一个子类只能继承一个抽象类(虚类),但能实现多个接口 2.一个抽象类可以有构造方法,接口没有构造方法 3.一个抽象类中的方法不一定是抽象方 ...

  5. java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答

    基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...

  6. java 实现接口后重写方法报错

    java 实现接口后重写方法报错 java 实现接口后重写方法报错 The method contextDestroyed(ServletContextEvent) of type InitListe ...

  7. Java 利用接口实现回调

    在 Java 支持方法指针之前,Java 接口不能提供一种实现回调的好方法.如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧.  熟悉 MS-Windows 和 X Window ...

  8. java一个接口执行结束释放内存_java的灵魂--JVM虚拟机

    JVM是运行在操作系统之上的,它与硬件没有直接的交互 JVM体系结构 1.类加载器 负责加载class文件,class文件在文件开头有特定的文件标示, 并且ClassLoader只负责class文件的 ...

  9. java private 接口_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  10. 《Java程序设计》实验报告——Java的接口与继承

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

最新文章

  1. Charles 河畔的大圆顶
  2. invalid substring parameter in My Opportunity account determination
  3. (十七)WebGIS中距离及面积测量的原理和实现以及坐标转换的简单介绍
  4. Diango博客--23.单元测试:测试 blog 应用
  5. 20180921 su与sudo命令、限制root用户通过ssh远程登录
  6. windows内核基础
  7. Axure原型设计相关:Axure RP8中继器实例(附rp文件)——列表的增删改查、分页
  8. 速达软件各版本及产品ID
  9. Centos调整分区存储大小
  10. HTML设计网站首页
  11. 【C++决赛】2019年全国高校计算机能力挑战赛决赛C++组题解
  12. Scala HandBook
  13. 新浪微博开发平台试用
  14. php球半径为2的圆面积,某竖直平面内有一半径为R的光滑固定圆环,斜边长2R、短边长R的匀质直角三角板放在环内,试求三角板在其平衡位...
  15. 2022款华为MateBook 14和华硕无畏15哪个好
  16. 【观察】加速IPFS基础设施落地,西部数据的三重独特优势
  17. Java编程——杨辉三角(一)
  18. 11月末.wang域名总量15强:易名中国榜首 份额涨5%
  19. 由浅入深,66条JavaScript面试知识点
  20. 笔记本开箱验机,防踩坑、测新机,确保自己不上当受骗

热门文章

  1. 数字化的一切都会在安全沙箱里面
  2. ORACLE隐式类型转换
  3. java sql timestamp_Java SQL Timestamp before()用法及代码示例
  4. 密码学基础:群、环、域概念总结
  5. JavaWeb开发 —— Web入门
  6. 3、Qt5 主窗口点击按钮 弹出另一个自定义窗口
  7. Vdbench:解决多台服务器联机运行时,出现的常见问题记录2
  8. android 的Zygote 分析
  9. Zygote启动及其作用
  10. 这几招对博勒飞粘度计检测精度的提升有很大帮助