java.util.Set接口 extends Collection接口

Set接口的特点:

1.不允许存储重复的元素

2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历

java.util.HashSet集合 implement Set接口

hashset特点:

1.不允许存储重复的元素

2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历

3.是一个无序的集合,存储元素和取出元素的顺序有可能不一样

4.底层是一个哈希表结构(查询速度非常的快)

代码:

  1. public static void main(String[] args) {
  2. HashSet<Integer> set = new HashSet<>();
  3. //使用add方法往集合中添加元素
  4. set.add(1);
  5. set.add(3);
  6. set.add(2);
  7. set.add(1);
  8. //使用迭代器遍历set容器
  9. //获取迭代器
  10. Iterator<Integer> iterator = set.iterator();
  11. while(iterator.hasNext()){
  12. Integer next = iterator.next();
  13. System.out.println(next);//1 2 3
  14. }
  15. //增强for循环遍历set集合
  16. for (Integer integer : set) {
  17. System.out.println(integer);
  18. }
  19. }

哈希值

  1. /**
  2. * 哈希值:是一个十进制的整数,由系统随机给出(对象的地址值,是一个逻辑地址,是一个模拟出来的地址,不是数据实际存储的物理地址)
  3. * 在Object类中有一个方法它可以获取对象的哈希值
  4. * int HashCode() 返回该对象的哈希码值
  5. * hashCode方法的源码: public native int hashCode();
  6. * native 代表该方法调用的是本地操作系统方法
  7. */
  8. public class Test {
  9. public static void main(String[] args) {
  10. //Person继承了Object,所以可以使用Object中的hashCode方法
  11. Person person = new Person();
  12. int i = person.hashCode();
  13. System.out.println(i);//1950409828
  14. Person person2 = new Person();
  15. int i2 = person2.hashCode();
  16. System.out.println(i2);//1229416514
  17. //String类的哈希值
  18. String str = "abcd";
  19. String str1 = "abcd";
  20. int code = str.hashCode();
  21. int code1 = str1.hashCode();
  22. System.out.println(code);//2987074
  23. System.out.println(code1);//2987074
  24. System.out.println(str == str1);//true
  25. System.out.println("===========");
  26. System.out.println("重地".hashCode());//1179395
  27. System.out.println("通话".hashCode());//1179395
  28. System.out.println("重地"=="通话");//false
  29. }
  30. }
  31. class Person extends Object{
  32. //重写HashCode方法
  33. @Override
  34. public int hashCode() {
  35. return super.hashCode();
  36. }
  37. }

HashSet集合的介绍和哈希值的更多相关文章

  1. HashSet集合介绍和哈希值

    HashSet集合介绍 ~java.util.Set接口 extends Collection 接口~Set接口的特点: 1.不允许存储重复的元素 2.没有索引,没有带索引的方法,也不能使用普通的fo ...

  2. Set\HashSet集合为什么能去重(转)

    如果想查找一个集合中是否包含有某个对象,大概的程序代码怎样写呢?当发现某个元素与要查找的对对象进行equals方法比较的结果相等时,则停止继续查找并返回肯定的信息,否则返回否定的信息.如果是一个集合中 ...

  3. Java set接口之HashSet集合原理讲解

    Set接口 java.util.set接口继承自Collection接口,它与Collection接口中的方法基本一致, 并没有对 Collection接口进行功能上的扩充,只是比collection ...

  4. Java 之 HashSet 集合

    一.概述 java.util.HashSet  是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致). java.util.HashSet 底层的实现是一个 ...

  5. 红黑树规则,TreeSet原理,HashSet特点,什么是哈希值,HashSet底层原理,Map集合特点,Map集合遍历方法

    ==学习目标== 1.能够了解红黑树 2.能够掌握HashSet集合的特点以及使用(特点以及使用,哈希表数据结构) 3.能够掌握Map集合的特点以及使用(特点,常见方法,Map集合的遍历) 4.能够掌 ...

  6. 哈希值、HashSet、LinkedHashSet

    一.哈希值 1. 哈希值其实就是一个int数字,我们可以把哈希值看成对象的一个标识,Object中的hashCode方法,可以获取到对象的哈希值 2. Object中的hashCode方法是根据地址值 ...

  7. Java学习:Set接口与HashSet集合存储数据的结构(哈希表)

    Set接口 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许存储重复的元素 没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.u ...

  8. C# HashSet集合类型使用介绍

    1.HashSet集合 使用HashSet可以提高集合的运算.使用HashSet集合不自带排序方法,如果需要排序的需求可以参考使用List<T>集合配合Sort方法. HashSet的优势 ...

  9. HashSet集合存储数据的结构(哈希表)和Set集合存储㢝不重复的原理

    HashSet集合存储数据的结构(哈希表) Set集合存储㢝不重复的原理 前提:存储的元素必须重写hashCode方法和equals方法

随机推荐

  1. APP应用前端开发

    1.开发手机APP前端要重视meta标签的编写: 2.注意HTML5标签在前端开发中的使用: 3.前端制作要舍弃CSS float属性(可flex布局),用绝对定位不利于页面布局的扩展: 4.APP前 ...

  2. 设计模式---单例模式,pickle模块

    设计模式---单例模式 简介 单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实 例存在.当你希望在整个系统中,某个类只能出现一个实例时 ...

  3. 印尼医疗龙头企业Halodoc的数据平台转型之数据平台V2.0

    1. 摘要 数据平台已经彻底改变了公司存储.分析和使用数据的方式--但为了更有效地使用它们,它们需要可靠.高性能和透明.数据在制定业务决策和评估产品或 Halodoc 功能的性能方面发挥着重要作用.作 ...

  4. e2fsck-磁盘分区修复

    检查 ext2/ext3/ext4 类型文件系统. 语法 e2fsck [-panyrcdfvtDFV] [-b superblock] [-B blocksize] [-I inode_buffer ...

  5. 线性求 $i^i$ 的做法

    线性求 \(i^i\) 的做法 方便起见,我们记 \(f_i=i^i\),\(i\) 的最小质因子为 \(p=\mathrm{minp}(i)\),第 \(i\) 个质数为 \(\mathrm{pr} ...

  6. 我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

    前言 怎样的契机? 实际上,目前毕业已经两年时间了,在大学时就已经开始关注字节跳动的发展.一开始,我是电气自动化专业的,大二清楚目标之后就转计算机了,大四进了一家小型的互联网公司实习,具体就不说哪家了 ...

  7. React项目实现导出PDF的功能

    在做web项目中,有时候会遇到pdf导出的需求,现根据之前在公司的React项目中遇到的导出PDF需求,整理一个demo出来. 导出PDF需要用到两个依赖包:html2canvas.jspdf 1.安 ...

  8. Bika LIMS 开源LIMS集——ERD实体关系定义(数据库设计)

    系统数据分类 数据分为四类: template 模板,基础静态数据 static 静态数据,核心静态数据,检测方法等 dynamic 动态数据,样品检测流程数据 organisation 组织机构数据 ...

  9. redis主从复制(九)

    先来简单了解下redis中提供的集群策略, 虽然redis有持久化功能能够保障redis服务器宕机也能恢复并且只有少量的数据损失,但是由于所有数据在一台服务器上,如果这台服务器出现硬盘故障,那就算是有 ...

  10. ShardingSphere-proxy-5.0.0容量范围分片的实现(五)

    一.修改配置文件config-sharding.yaml,并重启服务 # # Licensed to the Apache Software Foundation (ASF) under one or ...