java中级——集合框架【3】-HashSet
HashSet
package cn.jse.hashset;
import java.util.HashSet;
public class TestCollection {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("小明");
System.out.println("第一次插入数据:"+names);
//插入第二次同样的数据
names.add("小明");
System.out.println("第二次插入数据:"+names);
//结果发现如果插入相同的数据,是插不进的,容器只会保留一个
}
}
控制台:

结论就是set元素是不重复的,但是还有什么特点呢?——没有顺序
严格来说,HashSet是没有按照元素的插入顺序排序的。
...
HashSet<Integer> numbers = new HashSet<Integer>();
numbers.add(6);
numbers.add(1);
numbers.add(15);
System.out.println(numbers);
...
输出结果:[1, 6, 15]
还有就是因为Set不提供get()方法来获取指定位置的元素,所有遍历需要迭代器或者是增强型for循环
...
HashSet<Integer> numbers2 = new HashSet<Integer>();
for (int i = 0; i < 20; i++) {
numbers2.add(i);
}
System.out.println(numbers2);
//遍历Set可以采用迭代器iterator
for (Iterator<Integer> iterator = numbers2.iterator(); iterator.hasNext();) {
Integer i = (Integer) iterator.next();
System.out.println("numbers2的数据:"+i);
}
//或者采用增强型for循环
for (Integer i : numbers) {
System.out.println("numbers的数据:"+i);
}
...


我知道你是不是想问HashSet和HashMap的关系?这不难回答,你可以观察一下HashSet的源码,其中:
private transient HashMap<E,Object> map;
可以发现HashSet自身并没有独立的实现,而是在里面封装了一个Map。HashSet是作为Map的key而存在的,而value是一个命名为PRESENT的static的Object对象,因为是一个类属性,所以只会有一个。
具体的HashMap的使用方式,有兴趣的同学看这里:Java基础——对象容器(顺序、集合、Hash)
java中级——集合框架【3】-HashSet的更多相关文章
- java中级——集合框架【1】-ArrayList
集合框架----ArrayList 引子:我们先来看看传统数组的用法 写一个Hero对象类 package cn.jse.t1; public class Hero { public String n ...
- java中级——集合框架【4】-Collections
Collections 首先我们要知道Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 反转 reverse 使List中的数据发生发转 package cn.jse.c ...
- java中级——集合框架【2】-二叉树
二叉树 二叉树概念 首先我们要明确,二叉树由各种节点组成:还有就是二叉树特点:(1)每个节点都可以有左子节点,右子节点(2)每一个节点都有一个值 如图所示: 代码所示: package cn.jse. ...
- Java集合框架之HashSet浅析
Java集合框架之HashSet浅析 一.HashSet综述: 1.1HashSet简介 位于java.util包下的HashSet是Java集合框架的重要成员,它在jdk1.8中定义如下: publ ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
随机推荐
- [JXOI2018]守卫
嘟嘟嘟 正如某题解所说,这题很有误导性:我就一直在想凸包. 随便一个数据,就能把凸包hack掉: 这样我们的点G就gg了. 所以正解是什么呢?dp. 题解看这位老哥的吧,我感觉挺好懂的:题解 P456 ...
- java和maven环境变量设置,Tomcat部署
Java环境变量设置 Win10我的电脑右击属性,高级系统设置,高级,环境变量设置 新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program F ...
- sqlmap的简单使用
SQLmap基于Python编写,只要安装了Python的操作系统就可以使用它. 一.SQLMap判断是否存在注入 1. sqlmap -u "http://XXXXXXX?id=1&quo ...
- IDEA+控制台使用搜索\查找功能
- Luogu P4169 [Violet]天使玩偶/SJY摆棋子
传送门 二维平面修改+查询,cdq分治可以解决. 求关于某个点曼哈顿距离(x,y坐标)最近的点——dis(A,B) = |Ax-Bx|+|Ay-By| 但是如何去掉绝对值呢? 查看题解发现假设所有的点 ...
- 从零开始搭建django前后端分离项目 系列三(实战之异步任务执行)
前面已经将项目环境搭建好了,下面进入实战环节.这里挑选项目中涉及到的几个重要的功能模块进行讲解. celery执行异步任务和任务管理 Celery 是一个专注于实时处理和任务调度的分布式任务队列.由于 ...
- EntityFramework Core并发导致显式插入主键问题
前言 之前讨论过EntityFramework Core中并发问题,按照官网所给并发冲突解决方案以为没有什么问题,但是在做单元测试时发现too young,too simple,下面我们一起来看看. ...
- Javascript 小练习
--------------------------要收获别人五年才能收获的东西,你就要做好准备,遭受别人五人所遭受的坎坷” // -------------------------------*** ...
- SQLServer 存储过程+定时任务发邮件
SQLServer 代理发邮件需要开启SQL Server 代理服务器,然后,在[管理]-[数据库邮件]中,右键点击配置数据库邮件. 我用的是腾讯的企业邮箱,个人的163邮箱略微不同.下图是相关邮件的 ...
- c++ 入门之对象指针
我们想 像使用基本数据类型一样使用类,自然,类自然也有指针,我们通过下面的代码来领教一下对象指针存在的意义: # include "iostream" # include &quo ...