java集合框架的概述:
集合和数组都是对数据进行存储的结构,简称为java容器
在实际的编程当中我们很多时候使用的是java集合来存储一组对象,因为我们的数组在存储数据时有一定的弊端,所以我们不得不使用集合来存储
集合得到作用:
对多个对象进行存储
我们这里要知道,这个存储只是内存层面的存储,不涉及持久化的存储(也就是不涉及存储到硬盘)
我们为一个txt,jpg,avi文件,或者是存储到数据库中都是一种持久化的存储
数组的特点:
一旦初始化之后,其长度也就是确定了
我们的数组一旦定义了之后,那么其元素的类型也就是确定了,我们也就只能操作指定类型的数据了(比如我们int [] arr, Object [] arr1)
如果我们定义了一个int类型的数组,那么我们的数组中就只能存储int类型的数据
如果我们定义了一个Object类型的数组,那么我们的这个数组中可以装任何的对象,也可以装入int类型等基本数据类型,这个时候就是使用了自动装箱,然后以我们Object类子类对象的形式撞到了Object类型的数组中去
数组在存储多个对象方面的缺点:
一旦数组初始化之后,这个数组长度不可以修改
也就是相当于我们要提前知道这个数组的长度为多少,这也就是一种局限性,也就是一种缺点
比如我们要求得一个字符串中的最大相同子串,这个时候如果我们的最大相同子串有多个,那么按我们以前的做法我们就是将这个返回的多个最大相同子串存储到我们的一个数组,这个时候我们就要提前声明好一个数组,这个时候我们在创建这个数组时我们就要给这个数组一个长度,但是由于我们也不能完全确定有多少个最大相同子串,这个时候我们就只能是将我们的数组创建的大一些,这个时候就很消耗内存,这个时候就是一种缺点
数组中提供的方法非常的有限,对于增加,删除,插入等操作非常不便,同时效率也不高
数组就是查询快,但是删除和插入慢
我们的数组中并没有提供我们对数组增减以及插入的方法
对于获取数组中实际存储的元素的数目,我们的数组没有提供现有的方法或者属性来获取
数组存储数据的特点是有序且可以重复,那么对于我们的元素不重复的需求我们的数组就不能满足
很多人觉得我们的数组一旦给定数据类型之后就确定了其存储的数据类型也是一种弊端,其实不是的,我们的数组给定一个数据类型之后我们只能存储给定的数据类型的数据其实是一种优点,这个才说明我们的数组是严谨的,才不容易出现bug,不会被人轻易的攻击
Java集合和数组的关系
我们的java集合就可以说是我们数组的一个升级版,java集合将上面的几个缺点都已经解决了,但是我们也不是说在我们的实际编程中就不用数组了,也不是的,我们还是会使用数组的,因为我们的数组也有我们的数组的优点,我们的集合有我们集合的好处,甚至我们可以在我们的Java集合的源码中看到数组,也就是我们的java集合也是在数组的基础上创建出来的,所以我们说我们的java集合和我们的数组之间是一种依赖的关系,更加具体的说使我们的java集合依赖我们的数组,如果我们没有数组,那么也肯定就没有我们的java集合,但是没有我们的java集合并不会影响我们的数组
java集合的使用场景之一:
在将一组java对象从数据库中提取到后台中时就是通过我们的java对象构成的List(集合的一种具体实现)传输的,当我们将数据库中的java对象提取到我们的后端(也即是服务端中时)我们接下来就要通过网络将我们的java对象传输到我们的前端(也即是客户端)中去,这个时候我们就要将我们的java对象构成的List转换成为JSON数组,这个时候我们的JSON数组可以被序列化,可序列化,也就是可以通过我们的网络进行传输
我们的JSON其实就是一个字符串,我们的字符串实现了Serialiable接口(也就是可序列化的)