`
mw08091020
  • 浏览: 14755 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

常见Java集合的实现细节(一)

 
阅读更多
    常用的Java集合有三种Set、Map和List,那么它们之间有什么关系呢?

一、Set和Map

    Set是一种集合元素无序且不可重复的集合,Map代表一种由多个键值对组成的集合,其中键值不可重复,Map集合其实类似于传统的关联数组。表面上看这两个集合之间相似性很少,实际上他们之间有莫大的关联,可以说Map集合是Set集合的扩展。

1、Set和Map的关系

    表面上看这两个及合并没有太多的相似之处,但如果只考察Map集合的key,不难发现,这些Map的key具有一个特征:不能重复且无序。也就是说,如果将Map集合的所有key集中起来,这些key就组成了一个Set集合。如果查API文档会发现Map集合提供了Set<K> keySet()这个方法返回所有key组成的Set集合。
    由此可见,Map的所有key具有Set集合元素的特征,其实,还可以实现从Set到Map的扩展--对于Map而言,相当于每个元素都是key-value的Set集合。对于一个Map集合而言,它本质上是一个关联数组。

2、HashMap和HashSet

   
    HashMap和HashSet有很多相似之处。对于HashSet而言,系统采用Hash算法决定集合元素的存储位置,这样可以保证快速存取集合元素;对于HashMap而言,系统将value当成key的附属,系统根据Hash算法来决定key的存储位置,这样可以保证快速存取集合key而value总是紧随key存取。
    在这里需要指出一点:虽然集合号称存储的是Java对象,但实际上不会真正将Java对象放入Set集合中,而只是在Set集合中保留这些对象的引用而已。也就是说,Java集合实际上是多个引用变量所组成的集合,这些引用变量指向实际的Java对象。
分享到:
评论

相关推荐

    AIC的Java课程1-6章

     掌握package(又称默认,友元)控制符,系统掌握4种访问控制符 第6章 面向对象(多态) 4课时  理解多态的概念,不关心具体细节,以抽象一般的思维方式考虑问题(同一接口,不同实现)。...

    java八股文java八股文.doc

    在现代编程面试中,"Java八股文"涵盖了Java基础、Java集合、多线程与并发、JVM(Java虚拟机)、设计模式、框架(如Spring、Hibernate)、数据库、网络编程等领域的知识点。这个词之所以受到关注,是因为很多技术面试...

    Java Core Sprout:基础、并发、算法

    Java Core Sprout:一个萌芽阶段的Java核心知识库。 访问这里获得更好的阅读体验:https://crossoverjie.top/JCSprout/ 常用集合 数组列表/向量 链表 哈希映射 哈希集 链接哈希映射 Java多线程 多线程中的常见问题 ...

    JAVA面试题最全集

    请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一...

    疯狂Java:突破程序员基本功的16课-高清扫描版带书签

    本书把容易被Java程序员所忽视的内容整理成书,介绍了Java的对象、数组的内存分配,介绍了常见集合的实现细节、内存回收的细节、表达式、流程控制、面向对象、异常的“陷阱”,常用的数据结构和算法的实现以及其他...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    JAVA基础课程讲义

    第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    免费开源!!Java Core Sprout:基础、并发、算法

    常用集合 数组列表/向量 链表 哈希映射 哈希集 链接哈希映射 Java多线程 多线程中的常见问题 同步关键字原理 多线程的三大核心 对锁的一些认知 ReentrantLock实现原理 ConcurrentHashMap 的实现原理 如何优雅地使用...

    JSP基于WEB网上论坛设计与实现(源代码+论文+开题报告+答辩PPT+外文翻译).rar

    本资料包是一个针对计算机专业学生或开发者的全面资源集合,旨在提供基于Java Server Pages (JSP) 技术实现WEB网上论坛的完整解决方案。包含了从项目启动到完成的所有关键文档和源代码,是学习和实践JSP编程的理想...

    JavaFamily:【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    我会从下图中的知识点去写这个系列,很多细节的点,可能想得不是很完善,大家可以去获取或者加我提意见(别忘记Star哟)。 原创文章每周最少两篇,公众号首发文章,首发视频,比博客早一到两篇。 目录(善用Ctrl+F) 注 ...

    突破程序员基本功的16课.part2

    第3课 常见Java集合的实现细节 3.1 Set和Map 3.1.1 Set和Map的关系 3.1.2 HashMap和HashSet 3.1.3 TreeMap和TreeSet 3.2 Map和List 3.2.1 Map的values()方法 3.2.2 Map和List的关系 3.3 ArrayList和...

    asp.net知识库

    Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...

    计算机程序的正确定义

    程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。  程序(港台称之为程式) program(me)或procedure  chéng xù  概念1.:为进行某活动或过程所规定的途径。  概念2.程序...

    iBATIS实战

    10.1 隐藏实现细节 173 10.1.1 为何要分离 174 10.1.2 一个简单示例 175 10.2 配置DAO 177 10.2.1 properties元素 177 10.2.2 context元素 178 10.2.3 transactionManager元素 178 10.2.4 DAO元素 182 10.3 配置技巧...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    操作系统(内存管理)

    文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的...

Global site tag (gtag.js) - Google Analytics