IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Java之哈希 -> 正文阅读

[数据结构与算法]Java之哈希

哈希值

哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值。

Object类中有一个方法可以获取对象的哈希值

  • public int hashCode():返回对象的哈希码值。

对象的哈希值特点:

  • 同一个对象多次调用hashCode()方法返回的哈希值是相同的。
  • 默认情况下,不同对象的哈希值是不同的。重写hashCode()方法,可以实现让不同对象的哈希值相同。

HadhSet集合概述和特点

HashSet集合特点:

  • 底层数据结构是哈希表
  • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致。
  • 没有带索引的方法,所以不能使用普通for循环遍历,但可以使用for each。
  • 由于是Set集合,所以是不包含重复元素的集合。

练习:存储字符串并遍历

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args){
        HashSet<String> hs=new HashSet<>();
        hs.add("java");
        hs.add("python");
        hs.add("golang");
        hs.add("one piece");
        for(String s:hs){
            System.out.println(s);
        }
    }
}

?由结果可知,输出的顺序和存放顺序不一样。


HashSet方法保证元素唯一性(参考视频)

?


哈希表

哈希表:

  • JDK8之前,底层采用数组+链表实现,可以说是一个元素为链表的数组。
  • JDK8以后,在长度比较长的时候,底层实现了优化。

?先算出每个对象的哈希值,根据哈希值算出对象的存储位置,然后看存储位置有没有对象,没有对象就放进去,有对象就遍历该位置上所有的对象,看是否哈希值一样,如果哈希值不一样,就放进去,如果哈希值一样,就用equals()方法判断元素内容是否一样,如果不一样就放进去,一样就不存储。


P243中讲到了HashSet存储学生对象时,如何去除重复对象的问题,即在学生类中重写hashCode和equals方法。


  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:50:05  更:2022-03-04 15:54:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/10 2:42:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码