Java_Se 容器2(Set 接口)

Set接口继承自Collection接口,Set接口中没有新增方法,它和Collection接口保持完全一致。我们在前面学习List接口的使用方式,在Set中仍然适用。因此,学习Set的使用将没有任何难度。Set接口特点Set特点:无序、不可重复。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切地讲,新元素如果和Set中某个元素通过equals()方法对比为true,则只能保留一个。

Set常用的实现类有:HashSet、TreeSet等,我们一般使用HashSet。

HashSet容器的使用HashSet是Set接口的实现类。是Set存储特征的具体实现。

public class HashSetTest {public static void main(String[] args) {
//实例化 HashSetSet<String> set=newHashSet<>();  
//添加元素set.add("a");set.add("b1");set.add("c2");set.add("d");

HashSet是一个不保证元素的顺序且没有重复元素的集合,是线程不安全的。HashSet允许有null元素。无序:在HashSet中底层是使用HashMap存储元素的。HashMap底层使用的是数组与链表实现元素的存储。元素在数组中存放时,并不是有序存放的也不是随机存放的,而是对元素的哈希值进行运算决定元素在数组中的位置。

不重复:当两个元素的哈希值进行运算后得到相同的在数组中的位置时,会调用元素的equals()方法判断两个元素是否相同。如果元素相同则不会添加该元素,如果不相同则会使用单向链表保存该元素。

通过HashSet存储自定义对象创建Users对象

        

TreeSet容器的使用:

通过元素自身实现比较规则:

通过比较器定义比较规则时,我们需要单独创建一个比较器,比较器需要实现Comparator接口中的compare方法来定义比较规则。在实例化TreeSet时将比较器对象交给TreeSet来完成元素的排序处理。此时元素自身就不需要实现比较规则了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国庆作业

day1 1.开发环境 Linux系统GCCFDBmakefilesqlite3 2.功能描述 项目功能: 服务器&#xff1a;处理客户端的请求&#xff0c;并将数据存入数据库中&#xff0c;客户端请求的数据从数据库进行获取&#xff0c;服务器转发给客户端。 用户客户端&#xff1a;实现账号的注册、登…

C++:string (用法篇)

文章目录 前言一、string 是什么&#xff1f;二、C语法补充1. auto2. 范围for 三、string类对象的常见构造1. Construct string object2. String destructor3. operator 四、string迭代器相关1. begin与end1&#xff09;begin2&#xff09;end3&#xff09;使用 2. rbegin 与 r…

计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

yum 源配置

在/etc/yum.repo.d目录下 格式&#xff1a; [repository_name] nameRepository description baseurlhttp://repository_url enabled1 gpgcheck0 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 其中&#xff1a; [repository_name]&#xff1a;源的标识名称&#xff0c;…

数据处理方式,线程与进程,多任务,Spark与MR的区别

目录 数据处理的方式有哪些 单机数据处理 集群数据处理 分布式计算框架 MapReduce ApplicationMaster Spark分布式计算类别 进程与线程的区别 进程是计算时分配资源的最小单位 线程是执行计算任务的最小任务 多进程的执行效率没有多线程的执行效率高 多任务 Spark和M…

代码随想录算法训练营Day18

669. 修剪二叉搜索树 力扣题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(rootnull){return null;}if(root.val<low){return trimBST(root.right,low,high);}if(root.val…

厂商资源分享网站

新华三&#xff08;H3C&#xff09;是一家中国知名的网络设备供应商&#xff0c;提供网络设备、网络解决方案和云计算服务。公司成立于2003年&#xff0c;是华为公司和惠普公司合资的企业&#xff0c;总部位于中国深圳。 华为&#xff08;Huawei&#xff09;是一家全球知名的电…

一个技巧实现在SharePoint中使用Copilot

前几天写了在onedrive中使用copilot对单个文件进行提问汇总分析与对多个文件进行比较汇总提问等&#xff1a; Copilot重磅更新&#xff01;OneDrive全新功能炸裂 很多小伙伴表示特别受用。 于是他们在纷纷尝试了一段时间后&#xff0c;开始把目光转向SharePoint和teams文件&a…

前端的全栈混合之路Meteor篇:分布式数据协议DDP深度剖析

本文属于进阶篇&#xff0c;并不是太适合新人阅读&#xff0c;但纯粹的学习还是可以的&#xff0c;因为后续会实现很多个ddp的版本用于web端、nodejs端、安卓端和ios端&#xff0c;提前预习和复习下。ddp协议是一个C/S架构的协议&#xff0c;但是客户端也同时可以是服务端。 什…

红日靶场1学习笔记

一、准备工作 1、靶场搭建 靶场地址 靶场描述 靶场拓扑图 其他相关靶场搭建详情见靶场地址相关说明 2、靶场相关主机信息 后续打靶场的过程中&#xff0c;如果不是短时间内完成&#xff0c;可能ip会有变化 主机ip密码角色win7192.168.122.131hongrisec2019!边界服务器win…

CAN(Controller Area Network)总线的仲裁机制

CAN&#xff08;Controller Area Network&#xff09;总线的仲裁机制是其核心特性之一&#xff0c;它确保了在多节点环境中数据能够高效、公正地传输。以下是对CAN仲裁机制的详细解释和介绍&#xff1a; 一、仲裁机制概述 在CAN总线网络中&#xff0c;各个节点地位平等&#…

【分布式微服务云原生】gRPC与Dubbo:分布式服务通信框架的双雄对决

目录 引言gRPC&#xff1a;Google的高性能RPC框架gRPC通信流程图 Dubbo&#xff1a;阿里巴巴的微服务治理框架Dubbo服务治理流程图 表格&#xff1a;gRPC与Dubbo的比较结论呼吁行动Excel表格&#xff1a;gRPC与Dubbo特性总结 摘要 在构建分布式系统时&#xff0c;选择合适的服务…

HTML DOM 节点

HTML DOM 节点 介绍 HTML DOM(文档对象模型)是HTML文档的编程接口。它将HTML文档表示为节点树,其中每个节点都是文档的一部分。HTML DOM节点包括元素节点、属性节点、文本节点等。本文将详细介绍HTML DOM节点的概念、类型和操作方法。 HTML DOM节点类型 元素节点 元素节…

Linux学习笔记(七):磁盘的挂载与扩展

Linux学习笔记&#xff08;七&#xff09;&#xff1a;磁盘的挂载与扩展 在虚拟机环境中&#xff0c;当我们的存储空间不足时&#xff0c;添加一块新的硬盘显得尤为重要。 1. 新增磁盘 首先&#xff0c;你需要确保有一块物理磁盘或虚拟磁盘。在虚拟机管理器中&#xff0c;你可以…

微信小程序:一个小程序跳转至另一个小程序

一、微信小程序支持一个小程序跳转至另一个小程序吗&#xff1f; 支持。 1.1、目标小程序需开放被跳转&#xff1a;目标小程序需要在其 app.json 文件中配置 navigateToMiniProgramAppIdList&#xff0c;将源小程序的 AppID 加入其中。 1.2、用户授权&#xff1a;用户需要授…

SSL 协议(HTTPS 协议的关键)

所谓的协议 协议只是一种规则&#xff0c;你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则&#xff0c;任何人都可以定协议 我们不需要太了解细节&#xff0c;这些是制定和完善协议的人去做的&#xff0c;我们只需要知道协议的一个大概 一、SSL 协议 1、…

PostgreSQL学习笔记二:PostgreSQL的系统架构

PostgreSQL 是一种功能强大的开源关系型数据库管理系统&#xff0c;其架构具有以下特点&#xff1a; 一、客户端/服务器架构 客户端 客户端可以是各种应用程序&#xff0c;如 Web 应用、桌面应用等&#xff0c;它们通过网络连接与 PostgreSQL 服务器进行通信。客户端使用标准的…

HTML图形

HTML图形 1. HTML5 Canvas2.HTML5 内联 SVG3.HTML 5 Canvas vs. SVG 1. HTML5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域&#xff0c;您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 1、创建…

【pytorch】pytorch入门5:最大池化层(Pooling layers )

文章目录 前言一、定义概念 缩写二、参数三、最大池化操作四、使用步骤总结参考文献 前言 使用 B站小土堆课程 一、定义概念 缩写 池化&#xff08;Pooling&#xff09;是深度学习中常用的一种操作&#xff0c;用于降低卷积神经网络&#xff08;CNN&#xff09;或循环神经网…

constructor

java 构造函数 在Java中&#xff0c;构造函数是用于初始化对象的特殊方法。构造函数具有与类同名的方法&#xff0c;并且没有返回类型。以下是Java构造函数的一些关键点和示例&#xff1a; 特点&#xff1a; 名称与类名相同&#xff1a;构造函数的名称必须与类的名称完全一致…