Java集合的总体框架相关知识总结
一、集合概述
数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它的数据。
二、集合在开发中的应用
集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有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集合底层的数据结构是一个二叉树
到此这篇关于Java集合的总体框架相关知识总结的文章就介绍到这了,更多相关Java集合框架内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 的相关资料,需要的朋友可以参考下...2016-05-14- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 首先来看下流程:流程原理: 1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的) 2.查询第三方登录表,如果不存在用户sina_id,分2...2014-05-31
- 这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
- 这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06