成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數組探秘:數據結構的基礎,深入解讀數組的內部機制!

大數據 數據分析
數組當中的元素在內存中是連續存儲的,且每個元素占用相同的內存、數組是有序的、數組的長度一旦確定是不可變的、當然數組也可以通過System.arraycopy方法進行數組的替換,簡單理解就是擴容。

 概述 

數組類似一種集合或列表,比如購物清單,我們看到的返回的一條條數據,都稱之為數組,數組在內存中是一塊連續的空間,可以保存相同類型的多個數據的容器、當然其中包括一維數組,二維數組,n維數組,但是一般常用的也就前面兩個。

 特征

數組包含列表的特征,同時具有自己獨有的特征,數組中存在一個重要的概念稱之為索引。

首先數組會有數字構成的索引來表示元素所在的位置,索引的位置是從0開始的,我們可以根據索引來快速訪問數組的元素。

圖片圖片

數組當中的元素在內存中是連續存儲的,且每個元素占用相同的內存、數組是有序的、數組的長度一旦確定是不可變的、當然數組也可以通過System.arraycopy方法進行數組的替換,簡單理解就是擴容。

 模擬數組的基本操作

其中包括添加,修改,刪除,遍歷,擴容等操作

package com.structure.array;


/**
 * Created by IDEA
 *
 * @author:m1397
 * @Time:2022/4/4 - 7:11
 * 數組:是有限個類型相同的變量所組成的有序集合,元素與元素之間緊密排列,既不能打亂元素的存儲順序,也不能跳過某個單元進行存儲
 */


public class ArrayDemo {


    /**
     * 數據大小
     */
    private int size;
    /**
     * 數組對象
     */
    private int[] data;
    /**
     * 當前存儲數量
     */
    private int num;


    private ArrayDemo(int size) {
        this.size = size;
        this.data = new int[size];
        this.num = 0;
    }




    public static void main(String[] args) {
        /**
         * 數組的基本操作
         */
        ArrayDemo arrayDemo = new ArrayDemo(5);
        arrayDemo.insert(1, 0);
        arrayDemo.insert(3, 1);
        arrayDemo.insert(4, 2);
        arrayDemo.insert(2, 3);
        arrayDemo.insert(3, 4);
        System.out.println("11 === " + System.currentTimeMillis());
        arrayDemo.insert(6, 3);
        System.out.println("22 === " + System.currentTimeMillis());
        arrayDemo.print();


    }


    /**
     * 讀取元素
     */
    public void print() {
        System.out.println("index = " + num);
        System.out.println("size = " + this.size);
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i] + " ");
        }
        System.out.println();
    }


    public void print(int index) {
        System.out.println(this.data[index]);
    }


    /**
     * 插入元素,含擴容
     *
     * @param element 元素
     * @param index   插入位置
     */
    public void insert(int element, int index) {
        if (index < 0 || index > this.size) {
            throw new RuntimeException("超出數組實際的元素范圍!!!");
        }
        if (this.num >= this.size) {
            resize();
        }
        // 遍歷數組,將需要插入的位置之后的元素都往后移動一位
        // 首先得移動存在數據的那個位置
        // index為下標
        for (int i = this.num - 1; i > index - 1; i--) {
            data[i + 1] = data[i];
        }
        data[index] = element;
        this.num++;
    }


    /**
     * 擴容
     * 將size擴容2倍,復制到新數組里面
     */
    private void resize() {
        int length = this.size;
        this.size = this.size * 2;
        int[] arrayNew = new int[this.size];
        System.arraycopy(data, 0, arrayNew, 0, length);
        data = arrayNew;
    }


    /**
     * 刪除元素
     *
     * @param index 刪除指定位置的元素
     * @return 返回刪除的元素
     */
    public int delete(int index) {
        if (index < 0 || index > this.size) {
            throw new RuntimeException("超出數組實際的元素范圍!!!");
        }
        int deleteElement = data[index];
        // 遍歷數組,將需要刪除的位置之后的元素都往前移動一位
        for (int i = index; i < this.num; i++) {
            data[i] = data[i + 1];
        }
        this.num--;
        return deleteElement;
    }


    /**
     * 修改
     *
     * @param element 修改元素
     * @param index   位置
     */
    public void update(int element, int index) {
        if (index < 0 || index > this.size) {
            throw new RuntimeException("超出數組實際的元素范圍!!!");
        }
        data[index] = element;
    }
}

注意事項

數組是一個連續的內存空間,因此支持隨機訪問,即可以通過下標快速訪問數組中的任意位置的元素。

下標是從0開始,介于[0,x) 之間,下標不能大于等于x,否則就會報數組下標越界異常。

數組是引用類型,當我們創建一個數組后,會在堆中分配一塊內存同時棧中指向堆中內存。

責任編輯:武曉燕 來源: java從零到壹
相關推薦

2023-03-28 07:44:23

數據結構數組

2021-07-14 23:55:18

數據結構數組

2023-06-07 15:25:19

Kafka版本日志

2016-11-14 10:17:41

2025-01-07 08:00:00

有序集合數據結構

2016-08-24 20:09:27

Linux數據結構位數組

2020-09-28 08:11:14

JavaScript數據

2022-07-28 11:33:23

數據分析經驗

2010-03-16 16:47:25

Python數組

2024-01-15 06:01:36

C++數組

2021-06-08 06:01:00

C++數據結構向量和數組

2011-06-02 09:42:08

數據防泄漏數據泄漏防護

2019-06-12 22:51:57

Redis軟件開發

2021-03-08 06:28:57

JAVA數據結構與算法稀疏數組

2010-07-16 10:38:24

Perl關聯數組

2020-06-29 07:44:36

Redis

2024-01-26 06:42:05

Redis數據結構

2024-09-28 10:50:08

數據飛輪數據中臺數據技術

2021-04-25 14:29:02

數據結構動態數組時間復雜度

2022-01-18 19:13:52

背包問題數據結構算法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产欧美在线人成 | 亚洲黄色一级毛片 | 国产精品久久 | 毛片区| 国产成人在线视频免费观看 | 国产精品一区久久久 | 久草资源在线 | 综合久久综合久久 | 视频在线h| 久久久久久av | 亚洲国产电影 | 91麻豆精品国产91久久久久久 | 在线视频国产一区 | 欧美日韩在线一区二区 | 亚洲精品日本 | 欧美一级免费看 | 九色国产 | 久久久精品日本 | 天天干天天玩天天操 | av黄色免费| 亚洲欧美日韩精品久久亚洲区 | 黄色片视频免费 | 欧美片网站免费 | 日韩欧美在线视频 | 麻豆精品国产免费 | 毛片综合 | 波多野结衣在线观看一区二区三区 | 最新国产视频 | 亚洲欧美自拍偷拍视频 | 在线观看精品 | 成人网址在线观看 | 日韩精品免费在线观看 | 亚洲欧美一区二区三区在线 | 欧美成人一区二区三区片免费 | 日本a v在线播放 | 99re热这里只有精品视频 | 在线观看成人免费视频 | 中文字幕在线播放第一页 | 国产亚洲一区二区精品 | 成年网站在线观看 | 亚洲网址 |