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

数据结构—线性表和顺序表

线性表:

        线性表是一个由n个具有相同特性的数据元素构成的有限序列。常用到的线性表都有:链表、队列、栈、顺序表....

顺序表:

        顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构(顺序表的元素类型是包装类,一般数组是基本数据类型

        按ctrl+鼠标左键我们可以看到List只是一个接口,而Arraylist是一个实现List接口的类,在用之前要先导包(导包其实idea会在我们用到List接口的时候自动帮我们导包,我们可以直接用)

         由于List只是一个接口,所以只能通过实例化去调用,在包里有很多的已经封装好的API可以给我们使用,通过实例化后就可以进行访问 

         因为list接口的元素数据类型是泛类,所以我们要用对应数据类型的包装类作为元素的数据类型,要避免省略类型,不然任何类型的元素都能放进表里,用起来就很麻烦

Arraylist的构造:

  //静态初始化,建一个空表
        List <T> name = new ArrayList<>();

动态初始化顺序表:指定顺序表的容量

    //动态初始化,建一个空间大小为12的顺序表
        List <Character> list2 = new ArrayList<>(12);

 Arraylist的扩容机制:

Arraylist是个动态顺序表,在插入元素的时候会自动进行扩容

提问:这段代码有无缺陷?

public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
    list.add(i);
    }
}

有!这个疑问就得必须去看ArrayList原有接口中的类是怎么写的方法。

我们可以看到原有的类中给定的Arraylist默认空间大小为10

 而扩容的方法是grow(),我们看一下方法grow()具体是怎么写的

 扩容机制中默认将原有的空间大小扩大为原来的1.5倍,如果需要的扩容空间超过1.5倍则按需求扩容。

总结:1.需要扩容的话就调用grow()进行扩容。

           2.初步预估扩容大小为原有的1.5倍,在进行扩容前先预计需要扩容的空间大小,按需求进行扩容避免空间过大而扩容失败。

           3.用Copyof()进行扩容。


http://www.kler.cn/a/303659.html

相关文章:

  • 博物馆实景复刻:开启沉浸式文化体验的新篇章
  • java:接口,抽象,多态的综合小练习
  • datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180
  • python 2小时学会八股文-数据结构
  • EXCEL延迟退休公式
  • 【CVPR2024】2024年CVPR的3D 目标检测的综述(还在补充中)
  • 【系统分析师】计算机组成与体系架构
  • 基于ssm框架的学生社团管理系统APP---附源码75171
  • JavaScript的事件介绍
  • MySQL_SQLYog简介、下载及安装(超详细)
  • 【深度学习】PyTorch 的发展历程 截止 2.1.0
  • 茅台镇酱香型白酒你知道多少?
  • MongoDB日志级别
  • 如何在本地Windows运行hadoop
  • conda 安装tensorflow一些命令
  • 人工智能在鼻咽癌诊断和治疗中的应用进展、当前挑战和未来前景|文献精析·24-09-13
  • 苹果CMS海洋CMS那个更容易被百度收录?苹果CMS站群
  • 输电线路在线监测摄像头:规格(一)
  • 【已解决】请教 “Sa-Token 集成 xxl-job,报错:非 web 上下文无法获取 HttpServletRequest” 如何解决
  • oracle select字段有子查询会每次执行子查询吗
  • 波克城市 x NebulaGraph|高效数据血缘系统在游戏领域的构建实战
  • Java中各种数据结构如何使用stream流
  • Xcode报错:Return from initializer without initializing all stored properties
  • Java-乐观锁和悲观锁的理解及实现方式
  • Android 亮度范围定制
  • uniapp tabBar不显示