Java Set基础知识

Set集合中不包含重复对象。
HashSet:

HashSet的底层用哈希散列表来存储对象。其中的散列码是由关键字的信息内容确定的。关键字到散列码的转换是自动执行的。

      存储元素时底层要做的判断:1.调用元素的hashCode()方法,直接访问对应的数组元素,有没有这个哈希值,没有就直接存储.2.数组中已经有哈希值相同的,那么就调用元素的equals()方法,和哈希值相同的元素进行一一比较3.equals()方法比较,有相等的就不存储,不相等就存储

所以可见HashSet是不按特定顺序存放的。并不能确定集合的排列顺序。

它的优点是,即使对于大的集合,也能使一些基本操作运行的时间保持不变。

package list.test;
import java.util.HashSet;public class Test4 {public static void main(String args[]) {// 创建HashSet 对象HashSet hs = new HashSet();// 加入元素到HashSet 中hs.add("B");hs.add("A");hs.add("D");hs.add("E");hs.add("C");hs.add("F");System.out.println(hs);}
}
//[A, B, C, D, E, F]

TreeSet:TreeSet是实现Set接口的实现类。所以它存储的值是唯一的,同时也可以对存储的值进行排序,排序用的是二叉树原理。

根据其元素的自然顺序按升序排序。

package list.test;
import java.util.TreeSet;
public class Test5 {public static void main(String args[]) {// 创建TreeSet 对象TreeSet ts = new TreeSet();// 加入元素到TreeSet 中ts.add("B");ts.add("A");ts.add("C");ts.add("E");ts.add("F");ts.add("D");System.out.println(ts);}
}
//[A, B, C, D, E, F]

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

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

相关文章

c语言基础练习题 字符串输入scanf/gets 字符串赋值、比大小

PTA上C语言程序设计练习题,包含查找书籍、字符串排序。主要用到字符串输入scanf/gets 字符串赋值、比大小等知识。 1.查找书籍 习题9-4 查找书籍 (20 分) 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和…

ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路

在web开发过程当中,我们经常需要在前台页面输入关键词进行数据的搜索,我们通常使用的搜索方式是将搜索结果用另一个页面显示,这样的方式对于搭建高性能网站来说不是最合适的,今天给大家分享一下如何使用 jquery,MySQL …

esxi 修改服务器配置失败,R720服务器安装 ESXI 5.5update1后出现XXX错误

R720服务器,安装ESXI5.5UPDATE1 (DELL 的版本)后,安装了几个WIN2003及CENTOS的虚拟机。启用了一台2003和一台CENTOS6.5没有安装vCenter Server从vSphere Client端连接到esxi5.5服务器,发现每次重新启动ESXI,启动事件里面有很多类似…

(哈希)两数之和(leetcode 1)

1.题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意…

丢失的数字

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3 个数字,所以所有的数字都在范围 [0,3…

ftp服务器收集文件,ftp服务器收集文件

ftp服务器收集文件 内容精选换一换为了对源端服务器进行迁移可行性评估以及为后续目的端服务器的选择和配置提供必要性数据,迁移Agent会收集源端服务器的相关信息并上报到主机迁移服务。收集的Windows操作系统的具体数据如表1所示。收集的Linux操作系统的具体数据如…

STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

一、stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口,可以做输入也可做输出,GPIO端口可通过程序配置成输入或输出。 STM32FXXXIGT6一共9组IO:PA~ PI,其中PA~ PH每组16个IO,PI只有PI0~PI11。…

STM32-时钟-时钟树-时钟初始化配置

1.STM32时钟 STM32有5个时钟源:HSI、HSE、LSI、LSE、PLL HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接…

pe系统 服务器维护,FirPE 维护系统

前言年更项目更新啦~~~,这次修复了一些BUG,此外还增加了亿点特性。首次使用WinRE注册表,使得WinPE速度更快了。系统简介FirPE 是一款系统预安装环境(Windows PE),它具有简约、易操作等特点,使用起来十分人性化。以U盘作…

STM32-Systick滴答定时器-延时函数

1.STM32-Systick滴答定时器 Systick定时器,是一个简单的定时器,对于ST的CM3,CM4,CM7内核芯片,都有Systick定时器。 Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如…

华为服务器更改从系统盘启动不了,华为服务器设置启动项

华为服务器设置启动项 内容精选换一换对于已安装Cloud-Init/Cloudbase-Init的云服务器,首次执行切换/故障切换操作,或者创建容灾演练后,系统第一次启动时会运行Cloud-Init/Cloudbase-Init,为云服务器重新注入初始化数据&#xff0…

STM32-NVIC中断优先级分组-中断优先级设置

STM32-中断优先级管理NVIC 1.NVIC中断优先级分组 NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。STM32F中文参考手册中搜索向量表可以找到相应的中断说明。 CM4/CM7 内核支持256个中断,其中包含了16个内核中断和240个外部中…

hyper-v虚拟服务器内存满了,在Hyper-V Dynamic Memory里设置虚拟内存

Hyper-V R2 SP1版中加入了动态内存技术,关于内存分配的猜想也随之结束。当VMware可以自动进行虚拟内存分配的时候,Hyper-V通过动态内存让用户可以调整虚拟内存的设置。这种灵活性为主机内存分配方式提供了参考,有效提高了精确度和降低难度。通…

STM32-IO引脚复用-原理和使用

1.什么是端口复用? STM32有很多的内置外设(把一些功能ADC\看门狗…集中到芯片里面),这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候&#xff0c…

泰拉瑞亚服务器config修改,泰拉瑞亚配置怎么修改_泰拉瑞亚配置修改方法介绍...

泰拉瑞亚配置怎么修改呢,还有很多玩家还不知道的,下面小编为玩家们带来了泰拉瑞亚配置修改方法介绍,一起来看看吧。泰拉瑞亚配置修改方法介绍Config文件(1)Wiki链接http://terraria.gamepedia.com/Config.json_settings(2)关于Configconfig文…

STM32-UART-串口通信框图-波特率计算

1.处理器与外部设备通信的两种方式: 并行通信 传输原理:数据各个位同时传输。优点:速度快缺点:占用引脚资源多 串行通信 传输原理:数据按位顺序传输。优点:占用引脚资源少缺点:速度相对较慢…

java客户端与服务器信息加密,Java AES加密 - 在客户端和服务器之间发送初始化向量...

我在客户端生成初始化向量,其中消息被加密,然后与解密向量一起发送到服务器。Java AES加密 - 在客户端和服务器之间发送初始化向量客户端代码:String key1 "1234567812345678";byte[] key2 key1.getBytes();SecretKeySpec secret…

STM32-串口发送数据-过程与配置

串口发送过程配置流程 HAL库中串口寄存器定义文件: stm32f429xx.h F429芯片 stm32f767xx.h F767芯片 stm32f103xx.h F103芯片 stm32fnnnx.x.h 其他芯片 可以在其中找到USART_TypeDef:最终会映射到寄存器的地址。 typedef struct {__IO uint32_t CR1;…

STM32 串口接收流程-串口接收中断

串口接收 串口接收流程 编程USARTx_CR1的M位来定义字长。编程USARTx_CR2的STOP位来定义停止位位数。编程USARTx_BRR寄存器确定波特率。使能USARTx_CR1的UE位使能USARTx。如果进行多缓冲通信,配置USARTx_CR3的DMA使能(DMAT)。使能USARTx_CR1的RE位为1使…

STM32-串口接收、发送数据实验-程序代码分析

串口通信实验 Printf支持 printf向串口发送一些字符串数据。如果使用串口2,可以修改while((USART1->SR&0X40)0);和USART1->DR (u8) ch; 中的USART1为USART2. //加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1 #pragma import(__use_…