Java集合的总体框架相关知识总结
作者:想成为大师啊 发布时间:2021-06-25 10:43:36
一、集合概述
数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它的数据。
二、集合在开发中的应用
集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在Java程序中会将10条数据封装成10个Java对象,然后将10个Java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来
三、集合存储的数据
Java集合中实际存放的只是对象的引用,每个集合元素都是一个引用变量,实际内容都放在堆内存或者方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时就会被收回的。
可以通过包装类把基本类型转为对象类型,存放引用就可以解决这个问题。更方便的,由于有了自动拆箱和装箱功能,基本数据类型和其对应对象(包装类)之间的转换变得很方便,想把基本数据类型存入集合中,直接存就可以了,系统会自动将其装箱成封装类,然后加入到集合当中
注意:
集合在Java中本身是一个容器,是一个对象
集合中任何时候存储的都是“引用”
集合里面存储的是对象内存地址
集合里面可以套集合
集合也是一个对象,也有内存地址
在Java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构当中。什么是数据结构?数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。
比如
数组
二叉树
链表
哈希表…
以上这些都是常用的数据结构
你往集合c1中存放数据,可能是放到数组上了。
你往集合c2中存放数据,可能是放到二叉树上了。
…
你使用不同的集合等同于使用了不同的数据结构。new不同的对象,就是使用不同的数据结构。如果对集合用法不了解,多去查JDK的API和百度
new ArrayList(); 创建一个集合,底层是数组
new LinkedList(); 创建一盒集合对象,底层是链表
new TreeSet(); 创建一个集合对象,底层是二叉树
四、集合的包
所有的集合类和集合接口都在Java.util包下,Java.util.*;
五、集合的两大类
一类是单个方式存储元素,单个方式存储元素,这一类集合中超级父接口:Java.util.Collection;
一类是以键值对的方式存储元素,以键值对的方式存储元素,这一类集合中超级父接口:Java.util.Map;
Iterrator it = “Collection 对象”.iterator();
it是迭代器对象
synchronized
修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。
Iterable是接口
可迭代的,可遍历的,所有集合元素都是可迭代的,可遍历的
属性:iterator()
Collection是接口
collection继承于Iterable
所有集合继承Iterable的含义是:所有集合都是可迭代的
Iterator
Iterator与Collection是关联关系
集合的迭代器对象
属性:hashNext(),next(),remove()…
List是接口
List继承于Collectionlist
集合元素的特点:有序可重复,存储的元素有下标
有序实际上是说存进去是这个顺序,取出来还是这个顺序,这里的顺序不是按照大小排序
有序是因为list集合都有下标,下标从0开始,以1递增
ArrayList
ArrayList继承于ListArrayList
集合底层采用了数组这种数据结构
ArrayList集合是非线程安全的
LinkedList
LinkedList继承于List
LinkedList集合底层采用了双向链表数据结构
Vector
Vector继承于List
Vector集合底层采用了数组这种数据结构
Vector集合是线程安全的
Vector所有的方法都有syndronized关键词修饰,所以线程安全,但是效率较低,Vector用的少
Set是接口
Set继承于Collection
Set集合存储元素特点:无序不可重复
无序表示存进去是这个顺序,取出来就不一定是这个顺序了
Set集合中元素没有下
标Set集合中的元素不能重复
HashSet
HashSet继承于Set
HashSet集合在new的时候,底层实际上new了一个HashMap集合
向HashSet集合中存储元素,实际上是存储到了HashMap集合中
HashMap集合是一个哈希表数据结构
SortedSet是接口
-SortedSet集合存储元素的特点:无序不可重复,但是放在SortedSet集合中的元素可以自动排序
SortedSet是可排序集合。放到该集合中的元素是自动按照大小顺序排序
TreeSet
TreeSet继承于SortedSetTreeSet
集合底层实际上是TreeMap
new TreeSet集合的时候,底层实际上new了一个TreeMap集合
往TreeSet集合中放数据的时候,实际上是将数据放到TreeMap集合中了
TreeMap集合底层采用了二叉树数据结构
Map是接口
Map集合和Collection集合没有关系
Map集合以key和value的这种键值对的存储方式存储元素
key和value都是存储Java对象的内存地址
所有Map集合的key特点:无序不重复
Map集合的key和Set集合存储元素特点相同
HashMap
HashMap继承于Map
HashMap集合底层是哈希表数据结构
非线程安全的
Hashable
Hashable集合底层也是哈希表数据结
构线程安全,其中所有方法都带有synchronized关键字,效率低
SortedMap是接口
SortedMap集合存储元素特点:无序不可重复
放在SortedMap集合key部分的元素会自动按照大小顺序排序
称为可排序的集合
Properties
Properties继承Hashable,另外Properties存储元素的时候也是采用key和value的形式存储k
ey和value只支持String类型,不支持其他类型
Properties被称为属性类
TreeMap
TreeMap集合底层的数据结构是一个二叉树
来源:https://blog.csdn.net/xuexiwd/article/details/117195801


猜你喜欢
- 一、直接执行SQL查询:1、mappers文件节选<resultMap id="AcModelResultMap"
- InetAddress类InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名。你通过一个IP主机名与这个类发生作用,
- 在多线程对一个整数进行自增操作时,需要用synchronized进行同步。然而,如果synchronized的对象选取的不合适的话,就无法实
- 当 Maven 无法依赖 spring-cloud-starter-zipkin 时,您可以尝试以下方法解决:确保拼写正确:请检查项目中的
- Java获取文件的类型和扩展名实现代码:File file=new File("E:\\aa.jpg"); String
- 一,功能效果二,实现过程1,先写xml文件:dialog_keyboard.xml 注意事项(1),密码
- 前言虽然Aandroid目前已经有RecyclerView了、非常强大的一个View、可以直接控制成ListView以及GridView等、
- 百度了许多相关资料,对两种修改app图标的方式进行总结:第一种:(最简单的方法)将你准备好的 图标放入res目录下的drawable,在An
- Spring Boot项目默认的会打包成单一的jar文件,但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。这时候可以在pom
- 在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得得心应手呢?和我一起跟着《
- 我们可以试想ImageView能显示图片,而VideoView就是用来显示视频的。使用VideoView播放视频的步骤如下 【1】在界面布局
- TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点。TreeSet 和 Tree
- RecyclerView 是 android-support-v7-21 版本中新增的一个 Widgets, 还有一个 CardView 会
- 1、 什么是WMI WMI是英文Windows Management Instrumentatio
- private void btnSetOk_Click(object sender, EventArgs e) &nb
- 1.数据类型的分类Java的数据类型主要分为两类:基本数据类型、引用数据类型Java中的字符串String属于引用数据类型。因为String
- 一、项目运行环境配置:Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe
- Android设备用久了,截屏是个麻烦事。更麻烦的是通过qq传到电脑上,倒腾半天。其实用adb命令就可以截屏,然后写个pull的语句就可以拉
- 本文实例讲述了JAVA线程池原理。分享给大家供大家参考,具体如下:线程池的优点1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每
- 一、使用线程的理由1、可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。2、可以使用线程来简化编码。3、可以使用线程来实现并发执行。二