您现在的位置是:首页 > 正文

java的HashSet

2024-02-01 01:23:24阅读 3

java的HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。如果想了解HashMap可以去看我的这篇博客

HashSet 允许有 null 值,且是无序的。
HashSet 不是线程安全的, 如果多个线程同时修改 HashSet,那么最终的结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。

HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类,而自己定义的类和String则可以直接作为他的元素使用

基本类型和他的包装类的对应情况如下所示:

基本类型 引用类型
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character

引用:

import java.util.HashSet; // 引入 HashSet 类

初始化:

HashSet<String> sites = new HashSet<String>();
//如果是int类型,那么就是
HashSet<Integer> nums = new HashSet<Integer>();
//如果是自己定义的比如Animal类,那么就是
HashSet<Animal> animals = new HashSet<Animal>();

HashSet的增删查

增(add)

// 引入 HashSet 类      
import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("www.baidu.com");
        sites.add("www.hstc.edu.cn");
        sites.add("wx.qq.com");
        sites.add("mail.qq.com");
        sites.add("www.baidu.com");  // 重复的元素不会被添加
        System.out.println(sites);
    }
}

显示如下:
在这里插入图片描述
可见,只剩下一个www.baidu.com了,因为他是不可重复的,而且顺序也跟我们添加的不太一样,究其原因,则是因为他是无序的。

删(remove)

方法:remove,删除成功返回true,失败返回false。

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("www.baidu.com");
        sites.add("www.hstc.edu.cn");
        sites.add("wx.qq.com");
        sites.add("mail.qq.com");
        sites.add("www.baidu.com");  // 重复的元素不会被添加
        System.out.println(sites);	
        //删除
        sites.remove("www.hstc.edu.cn");
        System.out.print("删除www.hstc.edu.cn后:");
        System.out.println(sites);   
    }
}

显示:
在这里插入图片描述

查(contains)

方法:contains,存在返回true,不存在返回false

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("www.baidu.com");
        sites.add("www.hstc.edu.cn");
        sites.add("wx.qq.com");
        sites.add("mail.qq.com");
        sites.add("www.baidu.com");  // 重复的元素不会被添加
        System.out.println(sites);	
        //查,判断某元素是否在其中
        System.out.print("判断某元素是否存在:");
        System.out.println(sites.contains("wx.qq.com"));
    }
}

显示:
在这里插入图片描述

HashSet的迭代

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("www.baidu.com");
        sites.add("www.hstc.edu.cn");
        sites.add("wx.qq.com");
        sites.add("mail.qq.com");
        sites.add("www.baidu.com");  // 重复的元素不会被添加
        System.out.println(sites);	
        for(String site : sites){
        	System.out.println(site);
        }
    }
}

显示:
在这里插入图片描述

HashSet的长度(size())

想知道HashSet的长度,只需要调用其方法size()即可。

网站文章

  • 流程控制 if----else

    流程控制: 对PHP程序执行的过程进行控制! PHP有哪些手段对程序执行过程进行控制!一、顺序执行 自上而下的执行即可! 对这个执行过程没有控制!二、分支执行 分支执行可以根据条件是否满足来选择执行某些代码,PHP的分支执行主要通过两种语句(if,switch)来实现! 1.if语句 注意:我们if语句的表达式所控制的代码,最好用花括号括起来,哪怕就是一条语句也用花括号括起来! ...

    2024-02-01 01:23:17
  • 一天吃透消息队列面试八股文

    一天吃透消息队列面试八股文

    有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能。

    2024-02-01 01:22:49
  • Codeforces Round #627 (Div. 3)题解

    Codeforces Round #627 (Div. 3)题解

    A. Yet Another Tetris Problem 题目 time limit per test 2 seconds memory limit per test 256 megabytes i...

    2024-02-01 01:22:42
  • (11)web安全|渗透测试|网络安全 漏洞挖掘的重点环节及基础知识

    (11)web安全|渗透测试|网络安全 漏洞挖掘的重点环节及基础知识

    (11)web安全|渗透测试|网络安全 漏洞挖掘的重点环节及基础知识

    2024-02-01 01:22:36
  • vCenter 服务器漏洞可导致代码执行和认证绕过

    vCenter 服务器漏洞可导致代码执行和认证绕过

    聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士VMware 修复了位于 vCenter Server 中的多个高危漏洞,可导致攻击者获得代码执行权限并绕过未修复系统上的认证。vCenter Ser...

    2024-02-01 01:22:07
  • 解决实现虚拟机win10与主机文件的共享问题

    解决实现虚拟机win10与主机文件的共享问题

    2024-02-01 01:21:59
  • class二进制文件解析(一)

    class二进制文件解析(一)

    class文件创建及解析创建项目结构:#项目名称testclassmkdir testClass#进入相应目录cd testClass#源码目录mkdir src#输出目录mkdir out#进入源码...

    2024-02-01 01:21:51
  • SSM医疗管理系统 热门推荐

    SSM医疗管理系统 热门推荐

    《SSM医疗管理系统》该项目采用技术jsp、SpringMVC、Spring、Mybatis、tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、文档、配套开发软件、软件安装教...

    2024-02-01 01:21:44
  • 112.求解非线性方程

    #include "math.h"#include "stdio.h"int BinSearchRoot(a,b,h,eps,x,m) /*用二法计算非线性方程的实根*/int m;/*参数意义:a ...

    2024-02-01 01:21:06
  • Spring-AOP深度学习

    AOP是一种编程范式,旨在将不同关注点(如日志记录、事务管理、性能监视等)与应用程序的核心业务逻辑分离开来。它通过在关注点与业务逻辑之间的交叉点(称为切点)上插入代码来实现这一目标。切点(Pointcut):切点是您选择在哪里插入额外代码的规则或条件。通常,它是一个方法的签名或一个特定的类。通知(Advice):通知是在切点上执行的额外代码块。

    2024-02-01 01:21:01