Java基础之详解HashSet的使用方法
Java HashSet
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。
HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。
添加元素
HashSet 类提供类很多有用的方法,添加元素可以使用 add() 方法:
实例
判断元素是否存在
我们可以使用 contains() 方法来判断元素是否存在于集合当中:
实例
删除元素
我们可以使用 remove() 方法来删除集合中的元素:
实例
删除集合中所有元素可以使用 clear 方法:
实例
计算大小
如果要计算 HashSet 中的元素数量可以使用 size() 方法:
实例
迭代 HashSet
可以使用 for-each 来迭代 HashSet 中的元素。
实例
到此这篇关于Java基础之详解HashSet的使用方法的文章就介绍到这了,更多相关HashSet的使用方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Java HashSet集合存储遍历学生对象代码实例
由于Set集合是不存储重复元素的,所以在做此案例时,如果我正常添加一个重复元素是什么结果呢? public class HashSetDemo { public static void main(String[] args) { //创建HashSet集合对象 HashSet<Student> hashSet = new HashSet<Student>(); //创建学生对象 Student s1 = new Student("爱学习", 21); Stude
-
HashSet工作原理_动力节点Java学院整理
对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码: public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { // 使用 HashMap 的 key 保存 HashSet 中
-
java中HashSet的特点及实例用法
1.HashSet和TreeSet区别 HashSet底层使用Hash表. 确保元素唯一性的原理:判断元素的hashCode值是否相同.如果是一样的话,会继续判断元素的equals方法是否是true. TreeSet底层采用红黑树. 确保元素的唯一性是通过Comparable或Comparator接口实现的. 2.HashSet和HashMap区别 事实上,HashSet的底层实现还是HashMap,只是它只使用了Key,具体如下: (1)在HashSet的add方法的底层,使用HashMap的
-
浅析Java中Map与HashMap,Hashtable,HashSet的区别
HashTable和HashMap区别 第一,继承的父类不同.Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类.但二者都实现了Map接口. 复制代码 代码如下: public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializable public class HashMap<K,V>extends
-
Java面试题之HashSet的实现原理
HashSet 的实现原理? 首先,我们需要知道它是Set的一个实现,所以保证了当中没有重复的元素. 一方面Set中最重要的一个操作就是查找.而且通常我们会选择 HashSet来实现,因为它专门对快速查找进行了优化. HashSet使用的是散列函数,那么它当中的元素也就无序可寻.当中是允许元素为null的. 先对实现原理进行一个总结: (1)基于HashMap实现的,默认构造函数是构建一个初始容量为16,负载因子为0.75 的HashMap.封装了一个 HashMap 对象来存储所有的集合元素,
-
通过实例学习Java集合框架HashSet
这篇文章主要介绍了通过实例学习Java集合框架HashSet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public class TestCollection { public static void main(String[] args) { HashSet<String> names = n
-
java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较
java 中HashMap.HashSet.TreeMap.TreeSet判断元素相同的几种方法比较 1.1 HashMap 先来看一下HashMap里面是怎么存放元素的.Map里面存放的每一个元素都是key-value这样的键值对,而且都是通过put方法进行添加的,而且相同的key在Map中只会有一个与之关联的value存在.put方法在Map中的定义如下. V put(K key, V value); 它用来存放key-value这样的一个键值对,返回值是key在Map中存放的旧va
-
Java基础之详解HashSet的使用方法
Java HashSet HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合. HashSet 允许有 null 值. HashSet 是无序的,即不会记录插入的顺序. HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的. 您必须在多线程访问时显式同步对 HashSet 的并发访问. HashSet 实现了 Set 接口. HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类. 添加元素 HashSet
-
Java基础之详解基本数据类型的使用
一.整型 主要扩展一下不同进制的整型 二进制.八进制.十进制.十六进制 * 二进制 : 0B(数字零+B) 0b(数字零+b) * 八进制 :0(数字零开头) * 十进制 :正常写就是十进制 * 十六进制 : 0X (数字零+X)0x (数字零+x) A-F 代表 10-15 1.1 测试代码 /** * 进制 : * 二进制 : 0B(数字零+B) 0b(数字零+b) * 八进制 :0(数字零开头) * 十进制 :正常写就是十进制 * 十六进制 : 0X (数字零+X)0x (数字零+x) *
-
java语言注解基础概念详解
1.RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃: 2.RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期: 3.RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在: 这3个生命周期分别对应于:Java源文件(.java文件)--->.class文件--->内存中的字节码.
-
java 方法与数组基础使用详解
目录 一.方法的使用 1.方法的定义 2.方法重载 二.数组的定义和使用 1.数组的基本概念 (1)数组的创建 (2)数组的初始化 (3)数组的遍历 2.数组是引用类型(JVM的内存分布) 3.引用变量 4.数组拷贝函数 5.二维数组的for.each遍历 一.方法的使用 1.方法的定义 java中的方法就相当于C语言中的函数 方法的语法格式 //方法的定义 修饰符 返回值类型 方法的名称([参数类型 参数]){ 方法体代码: [return 返回值]: } [注意事项] 修饰符:现阶段直接
-
Java BigDecimal基础用法详解
目录 一.BigDecimal概述 二.BigDecimal常用构造函数 2.1.常用构造函数 2.2.使用问题分析 三.BigDecimal常用方法详解 3.1.常用方法 3.2.BigDecimal大小比较 四.BigDecimal格式化 五.BigDecimal常见异常 5.1.除法的时候出现异常 六.BigDecimal总结 6.1.总结 6.2.工具类推荐 一.BigDecimal概述 一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Do
-
java二维数组基础知识详解
目录 1. 查找 2. 顺序查找 3. 二分查找 4. 多维数组 4.1 二维数组 175 4.2 二维数组细节 5. 二维数组的使用方式 176 6. 二维数组的动态初始化 1.先声明:类型 数组名[][]; 再定义(开辟空间) 数组名 = new 类型[大小][大小] 2.动态初始化-列数不确定 178 7. 二维数组的静态初始化 179 8. 二维数组练习 180 8.1 int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和 1. 查找 1) 顺
-
Java基础之java泛型通配符详解
前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 泛型带来的好处 在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的.对于强制类型转换错误的情况,编译器可能不提示错
-
java IO 字节流详解及实例代码
java IO 字节流详解 1. 如何理解输入输出流? 这是我当初在学习Java IO这一块很难理解的一块,输入输出流我们可必须以一个为参照物:我们以内存为参照物,凡是写入内存的我们叫输入流,从内存中写出的我们叫输出流.看下面的示例图 有了这样的一个概念对于我们再学习Java中的IO流我相信就会变得特别简单了. 2. 再看流的分类 流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕.流分类的方式很多: 1.按照输入的方向分,输入流和输出流,输入输出的参
-
kotlin 官方学习教程之基础语法详解
kotlin 官方学习教程之基础语法详解 Google 在今天的举行了 I/O 大会,大会主要主要展示内有容 Android O(Android 8.0)系统.Google Assistant 语音助手.Google 智能音箱.人工智能.机器学习.虚拟现实等.作为一个 Android 开发者,我关心的当然是 Android O(Android 8.0)系统了,那么关于 Android O 系统的一个重要消息是全面支持 Kotlin 编程语言,使得 Kotlin 成为了 Android 开发的官方
-
java对象拷贝详解及实例
java对象拷贝详解及实例 Java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的: @Test public void testassign(){ Person p1=new Person(); p1.setAge(31); p1.setName("Peter"); Person p2=p1; System.out.println(p1==p2);//true } 如果创建一个对象的新的副本,也就是说他们的初始状态完全一样,但以后可以改变各自的状态,
随机推荐
- 手动初始化Angular的模块与控制器
- 详解Angular2中Input和Output用法及示例
- Oracle数据库的备份及恢复策略研究
- PHP常用编译参数中文说明
- python实现同时给多个变量赋值的方法
- Python修改MP3文件的方法
- php中Ioc(控制反转)和Di(依赖注入)
- VS2010制作第一个简单网站
- JS弹出可拖拽可关闭的div层完整实例
- Linux命令每天必学(55)之traceroute命令
- 用AJAX技术实现在自己Blog上聚合并显示朋友Blog的最新文章
- Java容器类的深入理解
- PHP中通过加号合并数组的一个简单方法分享
- VBS基础编程教程 (第1篇)
- Python实现Tab自动补全和历史命令管理的方法
- jquery取消选择select下拉框示例代码
- jQuery实现字符串按指定长度加入特定内容的方法
- angular中ui calendar的一些使用心得(推荐)
- Java编程IP地址和数字相互转换代码示例
- spring-session简介及实现原理源码分析