广告
返回顶部
首页 > 资讯 > 精选 >java如何实现动态数组
  • 893
分享到

java如何实现动态数组

2023-06-20 21:06:08 893人浏览 八月长安
摘要

这篇文章主要介绍了java如何实现动态数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下数组最大的优点︰快速查询。scores[2]。数组最好应用于“索引有语意”

这篇文章主要介绍了java如何实现动态数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体内容如下

java如何实现动态数组

数组最大的优点︰快速查询。scores[2]。数组最好应用于“索引有语意”的情况,但是如果索引比较长就还是不要用数组了,比如身份证号,太长了。

java如何实现动态数组

Java提供给我们的数组是静态数组,大小在一开始就定下来了,所以我们要创建一个动态数组,来满足我们的需求。其实原理挺简单,初次创建的时候赋予一个初始大小,当容量不够用时进行扩容,下列代码最关键的是resize方法

public class Array<E> {    private E[] data;    private Integer size;         public Array(Integer capacity) {        // 在java里不能直接创建一个泛型数组,只能这样转换        data = (E[]) new Object[capacity];        size = 0;    }     public Array() {        this(20);// 默认容量为20    }         public E get(Integer key) throws Exception {        if (key >= data.length || key < 0 || key >= size)            throw new Exception("该索引非法");        return data[key];    }            public void insert(Integer key, E value) throws Exception {        this.resize(true);// 要在key检查之前执行        this.checkKey(key, false);        // 后移一位        for (Integer i = size - 1; i >= key; i--)            data[i + 1] = data[i];        data[key] = value;        size++;    }         public void delete(Integer key) throws Exception {        checkKey(key, true);        for (Integer i = key; i < size - 1; i++)            data[i] = data[i + 1];        // 实际上是通过覆盖的方式删除掉key索引的值,但是最后还需要删除掉size-1索引的值        data[size - 1] = null;        size--;        this.resize(false);    }         private void checkKey(Integer key, Boolean equal) throws Exception {        if (equal) {            if (key >= data.length || key < 0 || key >= size)                throw new Exception("该索引非法");        } else {            if (key >= data.length || key < 0 || key > size)                throw new Exception("该索引非法");        }    }         private void resize(Boolean isExpand) {        if (size == data.length && isExpand) {            //如果数组已经满了,那么就扩容为当前容量的1.5倍            E[] buffer = (E[]) new Object[size + (size / 2)];            for (Integer i = 0; i < size; i++)                buffer[i] = data[i];            data = buffer;        } else if (size < data.length / 4 && (!isExpand) && data.length / 2 != 0) {            //如果数组的size小于容量的四分之一,则容量降低一半            E[] buffer = (E[]) new Object[data.length / 2];            for (Integer i = 0; i < size; i++)                buffer[i] = data[i];            data = buffer;        }    }}

感谢你能够认真阅读完这篇文章,希望小编分享的“java如何实现动态数组”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: java如何实现动态数组

本文链接: https://www.lsjlt.com/news/300202.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java如何实现动态数组
    这篇文章主要介绍了java如何实现动态数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下数组最大的优点︰快速查询。scores[2]。数组最好应用于“索引有语意”...
    99+
    2023-06-20
  • java实现动态数组
    本文实例为大家分享了java实现动态数组的具体代码,供大家参考,具体内容如下 数组最大的优点︰快速查询。scores[2]。数组最好应用于“索引有语意”的情况,但是如果索引比较长就...
    99+
    2022-11-12
  • java数组长度如何实现动态调整
    在Java中,数组的长度是固定的,一旦定义了数组的长度,就无法再进行动态调整。如果需要动态调整数组的长度,可以使用Java集合类中的...
    99+
    2023-10-26
    java
  • Java 动态数组的实现示例
    目录静态数组动态数组的实现原理1.添加元素2.删除元素3.数组扩容4.数组缩减静态数组 Java中最基本的数组大家肯定不会陌生: int[] array = new int[6]...
    99+
    2022-11-12
  • JAVA怎么实现PHP的动态数组
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑JAVA怎么实现PHP的动态数组?java实现php的数组:和java的Map类似用数字获取值:HashMap<Integer, Object> map = ...
    99+
    2018-07-18
    JAVA PHP
  • java实现数组的动态初始化
    一、什么是数组的初始化就是为数组开辟连续的内存空间,并为每个数组元素赋予值。二、如何对数组进行初始化1、动态初始化 只指定长度,由系统给出初始化值int[] arr = new int[5];推荐相关视频教程:java视频教程2、静态初始化...
    99+
    2019-02-20
    java 实现 数组 动态初始化
  • java中动态数组的具体实现
    声明:data为数组名。size为数组中最后一个元素的下一个位置。实现动态数组的原因:因为java中的数组是静态的,在new数组时就需要指定数组的大小,如果需要存储的元素为未知的个数,设置空间过大会造成浪费,设置空间过小会无法存入全部数据,...
    99+
    2019-01-23
    java教程 java 动态数组 实现
  • java如何创建动态数组
    在Java中,可以使用ArrayList类来创建动态数组。 要创建一个动态数组,可以按照以下步骤进行操作: 导入ArrayList...
    99+
    2023-10-26
    java
  • Java数组怎么实现动态初始化
    这篇文章主要讲解了“Java数组怎么实现动态初始化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java数组怎么实现动态初始化”吧!概念1、数组动态初始化只给定数组长度,系统默认初始化值。2...
    99+
    2023-06-30
  • vb.net如何实现动态控件数组
    这篇文章主要介绍vb.net如何实现动态控件数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VB.NET控件数组问题1、在form的头部定义一个公共的ArrayList类型的变量Dim m_items As New...
    99+
    2023-06-17
  • C++详解如何实现动态数组
    目录动态数组示例代码运行环境运行效果动态数组 动态数组Vector可以动态扩展内存,其采用连续的内存空间,当内存空间不足,便以原来的容量的2倍或者1.5倍成倍的扩展,将原有的数组元素...
    99+
    2022-11-13
  • Java和C语言如何使用静态语言实现动态数组
    这篇文章将为大家详细讲解有关Java和C语言如何使用静态语言实现动态数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JAVA版JAVA自带了一个集合类ArrayList,可以实现动态数组的功能,相比原生...
    99+
    2023-05-31
    java c语言
  • Java数组实现动态初始化的实例详解
    概念 1、数组动态初始化只给定数组长度,系统默认初始化值。 2、格式 数据类型[] 数组名 = new 数据类型[数组长度]; int[] arr = new int[3];...
    99+
    2022-11-12
  • java如何创建一个动态数组
    在Java中,可以使用`ArrayList`类来创建动态数组。`ArrayList`类是Java集合框架中的一部分,它可以自动调整大...
    99+
    2023-09-15
    java
  • C++怎么实现动态数组
    本篇内容介绍了“C++怎么实现动态数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!动态数组动态数组Vector可以动态扩展内存,其采用连续...
    99+
    2023-07-02
  • Java数组的静态初始化如何实现
    这篇文章主要介绍“Java数组的静态初始化如何实现”,在日常操作中,相信很多人在Java数组的静态初始化如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数组的静态初始化如何实现”的疑惑有所帮助!...
    99+
    2023-06-30
  • 探秘ArrayList源码:Java动态数组的背后实现
    探秘ArrayList源码:Java动态数组的背后实现 一、成员变量二、构造器1、默认构造器2、带初始容量参数构造器3、指定collection元素参数构造器 三、add()方法扩容机制四、场景分析1、对于ensureExpli...
    99+
    2023-08-16
    java 开发语言 算法 数据结构
  • Java动态代理如何实现
    本篇内容介绍了“Java动态代理如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JDK动态代理:利用反射机制生成一个实现代理接口的匿名...
    99+
    2023-06-30
  • C#中怎么实现动态数组
    C#中怎么实现动态数组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数组的容量是固定的,但ArrayList的容量可以根据需要自动扩充。当我们修改了ArrayL...
    99+
    2023-06-17
  • Java ArrayList集合详解(Java动态数组)
    目录一、ArrayList集合的概述和基本使用1.概述2.基本使用二、ArrayList集合的详细介绍1.定义一个ArrayList集合2.ArrayList集合常用的方法3.将"类...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作