返回顶部
首页 > 资讯 > 精选 >HashSet/TreeSet是怎么使用hashCode()和equal()方法的
  • 719
分享到

HashSet/TreeSet是怎么使用hashCode()和equal()方法的

2023-06-03 01:06:26 719人浏览 八月长安
摘要

本篇内容主要讲解“HashSet/TreeSet是怎么使用hashCode()和equal()方法的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HashSet/TreeSet是怎么使用hash

本篇内容主要讲解“HashSet/TreeSet是怎么使用hashCode()和equal()方法的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HashSet/TreeSet是怎么使用hashCode()和equal()方法的”吧!

一. 问题

HashSet,TreeSet是如何使用hashCode()和equal()方法的

TreeMap,TreeSet中的对象何时以及为何要实现Comparable接口?

二. 回答:

HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个有序性.
3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
  a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
  b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象
      才可以真正定位到键值对应的Entry.
  c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value

[@more@]d. 覆写key的hashCode()和equal()时一定要注意,不要把它们和可变属性关联上,
      否则属性变了之后hashCode会变,equal也会为false, 这样在Map中就找不不到它了
      而且这样的对象因为找不到它所以得不到释放,这样就变成了一个无效引用了(相当于内存泄漏).
4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.

a. Comparator可以在创建TreeMap时指定,这时排序时使用Comparator.compare
  b. 如果创建时没有指定Comparator,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
  c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.

到此,相信大家对“HashSet/TreeSet是怎么使用hashCode()和equal()方法的”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: HashSet/TreeSet是怎么使用hashCode()和equal()方法的

本文链接: https://lsjlt.com/news/232075.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HashSet/TreeSet是怎么使用hashCode()和equal()方法的
    本篇内容主要讲解“HashSet/TreeSet是怎么使用hashCode()和equal()方法的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HashSet/TreeSet是怎么使用hash...
    99+
    2023-06-03
  • Java集合HashSet,TreeSet与LinkedHashSet怎么使用
    本篇内容介绍了“Java集合HashSet,TreeSet与LinkedHashSet怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2023-06-02
  • TreeSet的使用方法是什么
    TreeSet是Java中的一个集合类,它实现了Set接口,用于保存一组元素并且保持这些元素的顺序。TreeSet使用红黑树(Red...
    99+
    2024-03-08
    TreeSet
  • java Object的hashCode方法怎么使用
    这篇文章主要讲解了“java Object的hashCode方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java Object的hashCode方法怎么使用...
    99+
    2023-06-22
  • 怎么重写及应用equals()方法和hashCode()方法
    这篇文章主要介绍“怎么重写及应用equals()方法和hashCode()方法”,在日常操作中,相信很多人在怎么重写及应用equals()方法和hashCode()方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • Java中hashCode方法怎么用
    这篇文章主要介绍“Java中hashCode方法怎么用”,在日常操作中,相信很多人在Java中hashCode方法怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中hashCode方法怎么用”的疑...
    99+
    2023-06-29
  • Java中 hashcode方法的作用是什么
    这期内容当中小编将会给大家带来有关Java中 hashcode方法的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android...
    99+
    2023-06-14
  • Java基础之详解HashSet的使用方法
    Java HashSet HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的,即不会记录...
    99+
    2024-04-02
  • Java Collection集合的ArrayList和HashSet怎么用
    今天小编给大家分享一下Java Collection集合的ArrayList和HashSet怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2023-06-29
  • 怎么解决使用Hashcode中distinct()方法没有起效问题
    本篇内容介绍了“怎么解决使用Hashcode中distinct()方法没有起效问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2024-04-02
  • 关于重写equals()方法和hashCode()方法及其简单的应用
    目录重写 equals()方法 和 hashCode()方法重写 equals() 方法重写 hashCode() 方法扩展部分 TreeSet 的简单应用重写 equals()方法...
    99+
    2023-05-14
    重写equals()方法 重写hashCode()方法 重写equals()方法和hashCode()方法 equals()简单的应用
  • Java HashSet的Removals()方法使用要注意哪些事项
    本篇内容介绍了“Java HashSet的Removals()方法使用要注意哪些事项”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2023-07-02
  • cocoapods安装和使用的方法是什么
    CocoaPods 是一个针对 Objective-C 和 Swift 项目的依赖管理器。它可以帮助开发者轻松地添加第三方库或框架到...
    99+
    2023-06-12
    cocoapods安装
  • joomla安装和使用的方法是什么
    Joomla是一款免费的内容管理系统,以下是安装和使用Joomla的步骤:1. 下载Joomla:前往Joomla官网下载最新版本的...
    99+
    2023-06-03
    joomla安装
  • tensorflow部署和使用的方法是什么
    TensorFlow是一个开源的机器学习框架,可以用于构建、训练和部署深度学习模型。以下是TensorFlow部署和使用的一般步骤:...
    99+
    2024-03-12
    tensorflow
  • Git的使用方法是怎么样的
    这篇文章将为大家详细讲解有关Git的使用方法是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在傻瓜式部署方式出现问题之后,我们该通过什么方法搭建网站呢?其实京东云擎本身已经给出了答案...
    99+
    2023-06-10
  • ThinkPHP封装方法的概念和使用方法是什么
    今天小编给大家分享一下ThinkPHP封装方法的概念和使用方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是封装...
    99+
    2023-07-05
  • Golang方法的语法是什么和怎么调用
    本篇内容主要讲解“Golang方法的语法是什么和怎么调用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang方法的语法是什么和怎么调用”吧!一、方法定义Golang中可以为任何类型定义方法...
    99+
    2023-07-05
  • String hashCode方法选择数字31作为乘子的原因是什么
    本篇内容主要讲解“String hashCode方法选择数字31作为乘子的原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“String hashCode方法选择数字31作为乘子的原因是什...
    99+
    2023-06-15
  • Pytest中skip和skipif的使用方法是什么
    本篇内容主要讲解“Pytest中skip和skipif的使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pytest中skip和skipif的使用方法是什么”吧!skip的用法使用示...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作