iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >HashSet工作原理_动力节点Java学院整理
  • 529
分享到

HashSet工作原理_动力节点Java学院整理

javahashseths 2023-05-31 15:05:14 529人浏览 独家记忆
摘要

对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:public class Has

对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:

public class HashSet<E>  extends AbstractSet<E>  implements Set<E>, Cloneable, java.io.Serializable  {  // 使用 HashMap 的 key 保存 HashSet 中所有元素 private transient HashMap<E,Object> map;  // 定义一个虚拟的 Object 对象作为 HashMap 的 value  private static final Object PRESENT = new Object();  ...  // 初始化 HashSet,底层会初始化一个 HashMap  public HashSet()  {  map = new HashMap<E,Object>();  }  // 以指定的 initialCapacity、loadFactor 创建 HashSet  // 其实就是以相应的参数创建 HashMap  public HashSet(int initialCapacity, float loadFactor)  {  map = new HashMap<E,Object>(initialCapacity, loadFactor);  }  public HashSet(int initialCapacity)  {  map = new HashMap<E,Object>(initialCapacity);  }  HashSet(int initialCapacity, float loadFactor, boolean dummy)  {  map = new LinkedHashMap<E,Object>(initialCapacity  , loadFactor);  }  // 调用 map 的 keySet 来返回所有的 key  public Iterator<E> iterator()  {  return map.keySet().iterator();  }  // 调用 HashMap 的 size() 方法返回 Entry 的数量,就得到该 Set 里元素的个数 public int size()  {  return map.size();  }  // 调用 HashMap 的 isEmpty() 判断该 HashSet 是否为空, // 当 HashMap 为空时,对应的 HashSet 也为空 public boolean isEmpty()  {  return map.isEmpty();  }  // 调用 HashMap 的 containsKey 判断是否包含指定 key  //HashSet 的所有元素就是通过 HashMap 的 key 来保存的 public boolean contains(Object o)  {  return map.containsKey(o);  }  // 将指定元素放入 HashSet 中,也就是将该元素作为 key 放入 HashMap  public boolean add(E e)  {  return map.put(e, PRESENT) == null;  }  // 调用 HashMap 的 remove 方法删除指定 Entry,也就删除了 HashSet 中对应的元素 public boolean remove(Object o)  {  return map.remove(o)==PRESENT;  }  // 调用 Map 的 clear 方法清空所有 Entry,也就清空了 HashSet 中所有元素 public void clear()  {  map.clear();  }  ...  }

--结束END--

本文标题: HashSet工作原理_动力节点Java学院整理

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HashSet工作原理_动力节点Java学院整理
    对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:public class Has...
    99+
    2023-05-31
    java hashset hs
  • Spring mvc工作原理_动力节点Java学院整理
    SpringMVC框架介绍Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Sprin...
    99+
    2023-05-31
    spring mvc 工作原理
  • servlet之session工作原理简介_动力节点Java学院整理
    要了解Session的底层工作原理。我们还是先看在一个会话过程中,同一个浏览器在访问多个web资源的情况好了,大致分为以下几个步骤:1,浏览器访问某个Servlet,这时如果服务器要从请求对象中获取Session对象(第一次获取也是创建),...
    99+
    2023-05-31
    servlet session
  • Java中HashSet和HashMap的区别_动力节点Java学院整理
    什么是HashSet?HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否...
    99+
    2023-05-31
    java hashset hashmap
  • Java字符编码原理(动力节点Java学院整理)
    Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常比较烦恼,大家都不愿意承认是自己的代码有问题。其实编码问题并没有那么神秘,那么不可捉摸,搞清Java的编码本质过程就真相大白了。先看个图:其实,编码问题存在两个方面:JVM之内和J...
    99+
    2023-05-31
    java 字符编码 原理
  • Java 中HashCode作用_动力节点Java学院整理
    第1 部分 hashCode的作用  Java集合中有两类,一类是List,一类是Set他们之间的区别就在于List集合中的元素师有序的,且可以重复,而Set集合中元素是无序不可重复的。对于List好处理,但是对于Set而言我们要如何来保证...
    99+
    2023-05-31
    java hashcode
  • ocp开闭原则_动力节点Java学院整理
    开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。Softeware entities like ...
    99+
    2023-05-31
    ocp 开闭原则 ava
  • Java死锁_动力节点Java学院整理
    死锁是两个甚至多个线程被永久阻塞时的一种运行局面,这种局面的生成伴随着至少两个线程和两个或者多个资源。在这里我已写好一个简单的程序,它将会引起死锁方案然后我们就会明白如何分析它。Java死锁范例ThreadDeadlock.javapack...
    99+
    2023-05-31
    java 死锁 ava
  • Java多态(动力节点Java学院整理)
    什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象...
    99+
    2023-05-31
    java 多态 ava
  • Java接口的作用_动力节点Java学院整理
    1. 接口是一种规范很好,你已经知道接口是一种规范了!下面这张图是我们生活中遇到的接口:电源插座接口。2. 为什么需要规范呢?因为有了接口规范:• 任何电器只有有符合规范的插头,就可以获得电力•&...
    99+
    2023-05-31
    java 接口
  • Java二进制操作(动力节点Java学院整理)
    移位位运算中大多数操作都是向左移位和向右移位。在Java中,这对应着<<和>>这两个操作符,示例如下:1 << 1 == 2 1 << 3 == 80xFFFFFFF0 >&g...
    99+
    2023-05-31
    java 二进制
  • JDBC简介_动力节点Java学院整理
    前言:什么是JDBC维基百科的简介:  Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。J...
    99+
    2023-05-31
    jdbc 简介 ava
  • 里氏代换原则_动力节点Java学院整理
    聊一聊里氏代换原则。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定...
    99+
    2023-05-31
    里氏代换原则 代换原则 ava
  • 开放封闭原则_动力节点Java学院整理
    定义:软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。对于扩展是开放的,对于更改是封闭的。关键是抽象,将一个功能的通用部分和实现细节部分清晰的分离开来。这里要求我们写代码要有抽象的概念。什么是抽象?指由实体抽离出概念的思考过程。...
    99+
    2023-05-31
    开放封闭原则 java ava
  • Java链接redis_动力节点Java学院整理
    要在Java程序中使用使用操作Redis,需要确保有Redis的Java驱动程序和Java设置在机器上。现在,让我们来看看如何设置Redis的Java驱动程序。 需要下载jedis.jar。请一定要下载它的最新版本。 需要包括jedis...
    99+
    2023-05-31
    java redis 链接
  • Java Map简介_动力节点Java学院整理
    Map简介将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关...
    99+
    2023-05-31
    java map ava
  • Java依赖倒转原则_动力节点Java学院整理
    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类...
    99+
    2023-05-31
    java 依赖倒转 ava
  • Java concurrency之AtomicLong原子类_动力节点Java学院整理
    AtomicLong介绍和函数列表AtomicLong是作用是对长整形进行原子操作。在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让l...
    99+
    2023-05-31
    java concurrency ava
  • Ehcache简介_动力节点Java学院整理
    使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存。CachingFilter功能可以对HTTP响应的内容进行缓存。1、主要特性     1. 快速.  &n...
    99+
    2023-05-31
    ehcache ava hcache
  • 接口隔离原则_动力节点Java学院整理
    定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿...
    99+
    2023-05-31
    接口隔离原则 java ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作