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 ...
随机推荐
- django ORM的总结
1.django分表的方案: https://mp.weixin.qq.com/s?__biz=MjM5NjA3Nzk3Ng==&mid=2648154502&idx=1& ...
- [Android] ScrollView can host only one direct child
android 采用ScrollView布局时出现异常:ScrollView can host only one direct child.主要是ScrollView内部只能有一个子元素,即不能并列两 ...
- ubuntu18.04 下 使用conda安装requirement.txt指定的依赖包
首先创建特定的虚拟环境 conda create -n temp_test python=3.5 conda install anaconda 切换到该环境 conda activate temp_t ...
- 004_浅析Python的GIL和线程安全
在这里我们将介绍Python的GIL和线程安全,希望大家能从中理解Python里的GIL,以及GIL的前世今生. 对于Python的GIL和线程安全很多人不是很了解,通过本文,希望能让大家对Pytho ...
- 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...
- ogg BR – BOUNDED RECOVERY
BR – BOUNDED RECOVERY 适用于 Extract 进程(仅适用于 Oracle数据库) 使用 BR 参数可以控制 GoldenGate 的 Bounded Recovery (BR) ...
- 在Ubuntu中部署并测试HyperLedger Fabric 0.6
最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来 ...
- python libnum库安装使用方法
libnum库是一个关于各种数学运算的函数库,它包含common maths.modular.modular squre roots.primes.factorization.ECC.converti ...
- android截屏
截屏是一个常用的操作,经常会有这种需求. 截屏的工具类 package com.fxb.screenshot; import android.app.Activity; import android. ...
- 我的微信小程序第一篇(入门)
前言 微信小程序出来已经有一段时间了,已经有很多大牛都写过相关教程了,那么我为啥还要写这篇文章呢?其实仅仅是个人对微信开发的一个兴趣吧,觉得是个很有意思的事情,后面有时间可能会发更多关于小程序的文章, ...