当前位置: 首页 > news >正文

JavaSE——集合、集合继承结构图

目录

一、集合概述

    1.1  集合我们常常会使用在什么地方?

   1.2  集合底层数据结构

    1.3 集合的分类

   1.4  Collection集合的继承结构(重要)

1.4.1 List接口继承图

1.4.2 Set接口继承图

 1.4.3  Collection集合继承结构图总结

1.5  Map集合继承图

1.6  总结


一、集合概述

  1. 数组其实就是一个集合,集合实际上就是一个容器,可以来容纳其他类型的数据;
  2. 集合是一个容器,是一个载体,可以一次性容纳多个对象;
  3. 集合不能直接存储基本数据类型,另外集合也不能直接存储java对象;
  4. 集合中存储的都是java对象的内存地址(或者说集合中存储的是音容);
  5. 集合是一个对象,也有一个内存地址
  6. 集合在java.util.*包下

   我们使用list.add(100)的时候,添加的并不是int类型,而是Integer类型,自动装箱了

 

    1.1  集合我们常常会使用在什么地方?

     比如我们连接数据库的时候,我们需要从数据库查询几百条的数据,此时我们就可以使用集合来进行接收者几百条的数据(这几百条的数据会被封装成java对象),然后统一返回到前端的页面,然后就会将数据展现出来

   1.2  集合底层数据结构

    在java中每一个一个不同的集合,底层会对应不同的数据结构,往不同的集合中存储元素,等于将数据存放到了不同的数据结构中。

   不同的数据结构,数据的存储方式不同,例如:数组。二叉树、链表、图.....都是常见的数据结构

    使用不用的集合,等同于使用了不同的数据结构

 

    1.3 集合的分类

         在java中集合分为两大类:

  •           单个方式存储元素

                       超级父接口:java.util.Collection

  •           键值对的方式存储元素 

                      超级父接口:java.util.Map

   1.4  Collection集合的继承结构(重要)

  

 

1.4.1 List接口继承图

 

 

1.4.2 Set接口继承图

我们可以从下图得知,当我们使用HashSet集合添加元素的时候,其实底层是调用的map集合进行的,这就印证了我们上面说的向HashSet集合中存储元素,实际上是存储到HashMap集合中了

 

 

 1.4.3  Collection集合继承结构图总结

以后的开发我们常用的是下面的几种,但是不局限于这几种

 SortedSet集合存储元素的特点:

    由于继承了Set集合,所以他的特点也是无序不可重复的

    但是放在SortedSet集合中的元素可以自动排序(可排序集合,自动按照大小顺序排序

有序:存进去的东西和取出来的东西不乱,怎么存的就怎么取出来

无序刚好相反,一定要理解好有序和无序的概念,否则会和自动排序混淆

 

1.5  Map集合继承图

  • Map集合与Collection集合没有关系,单独的一个继承体系
  • 以key、value这种键值对的方式存储元素
  • key和value都是存储java对象的内存地址
  • 所有Map集合的key特点:无序不可重复  (和Set集合存储元素特点相同)
  • Map集合的key,就是一个Set集合
  • 向HashSet集合中存储元素,实际上是存储到HashMap集合中了
  • 向TreeSet集合中存储元素,实际上是存储到TreeMap集合中了

 

1.6  总结

 

List集合存储元素特点:

  • 有序可重复
  • 有序:存进去的顺序和取出来的顺序相同,每一个元素都有下标
  • 可重复:存进去1,可以再存储一个1

Set(Map)集合存储元素的特点:

  • 无序不可重复
  • 无序:存进去的顺序和取出来的顺序不一定相同,Set集合中每一个元素都没有下标
  • 不可重复:存进去1,就不能再存储1了

SortedSet(SortedMap)集合存储元素的特点:

  • 无序不可重复
  • 无序:存进去的顺序和取出来的顺序不一定相同,Set集合中每一个元素都没有下标
  • 不可重复:存进去1,就不能再存储1了
  • 可排序:可以按照大小排序

Map集合的key,就是一个Set集合:

    往Set集合中存放数据,实际上存放到了Map集合的key部分了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HostMonitor监控软件
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • 接口查询优化:优雅的处理大批量数据及 in 超过 1000 问题
  • Linux搭建redis调试环境
  • 精确的数字-C++数据类型
  • C# 中的多线程和异步编程
  • 前端初识算法
  • SQL->基础->进阶
  • keepalived实现nginx负载均衡机高可用
  • 如何通过优化 Python 中的 GPU 使用率将视频处理速度提高 5 倍(教程含源码)
  • python获取文件夹下所有图片目录
  • 【MySQL】慢SQL搜集工具、SQL脱敏聚合处理
  • 手机号发验证码实现用户注册登录
  • 程序员缺乏经验的 7 种表现,你中了几个?
  • Spring框架中的核心技术之AOP
  • [译]如何构建服务器端web组件,为何要构建?
  • 230. Kth Smallest Element in a BST
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • js中forEach回调同异步问题
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • overflow: hidden IE7无效
  • quasar-framework cnodejs社区
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 前端相关框架总和
  • 使用API自动生成工具优化前端工作流
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 栈实现走出迷宫(C++)
  • 阿里云重庆大学大数据训练营落地分享
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • $().each和$.each的区别
  • (5)STL算法之复制
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (第一天)包装对象、作用域、创建对象
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (新)网络工程师考点串讲与真题详解
  • (一)RocketMQ初步认识
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET CLR Hosting 简介
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net IOC框架入门之一 Unity
  • .NET 设计一套高性能的弱事件机制
  • .net 使用ajax控件后如何调用前端脚本
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET和.COM和.CN域名区别
  • .NET中两种OCR方式对比
  • .sh 的运行
  • .skip() 和 .only() 的使用
  • /bin/rm: 参数列表过长"的解决办法
  • /etc/sudoer文件配置简析
  • @GetMapping和@RequestMapping的区别
  • [ C++ ] STL---stack与queue
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解