Java數據結構和算法(一)數組

Java數據結構和算法(一)數組

分類

基本類型數組
對象數組

初始化

靜態初始化
動態初始化

public static void main(String[] args) {
        //動態初始化  只指定數組長度,由系統分配初始值,初始值根據定義的數據類型來
        int[] numbers = new int[4];
        numbers[0] = 1;
        for (int i : numbers) {
            System.out.println(i);
        }
        System.out.println("---------------");
        //靜態初始化 在定義時就指定數組元素的值,此時不能指定數組長度
        numbers = new int[] {1,2,3,6};
        for (int i : numbers) {
            System.out.println(i);
        }
    }

1
0
0
0
1
2
3
6

存儲

數組中的元素在內存中連續存儲的,可以根據是下標快速訪問元素,因此,查詢速度很快,然而插入和刪除時,需要對元素移動空間,比較慢.

基本數據類型

這裏寫圖片描述

對象類型

這裏寫圖片描述

public static void main(String[] args) {
        //靜態定義一個數組
        Person[] persons;
        //分配內存空間
        persons = new Person[2];

        Person p1 = new Person();
        p1.age=10;
        p1.name="zs";

        Person p2 = new Person();
        p2.age=20;
        p2.name="ls";

        for (Person person : persons) {
            System.out.println(person);//null 由於還未給數組引用變量的null對象賦值
        }

        persons[0] = p1;
        persons[1] = p2;

        for (Person person : persons) {
            person.show();
        }
    }

數組爲何比鏈表查詢快?

尋址操作次數鏈表要多一些。數組只需對 [基地址+元素大小*k] 就能找到第k個元素的地址,對其取地址就能獲得該元素。鏈表要獲得第k個元素,首先要在其第k-1個元素尋找到其next指針偏移,再將next指針作爲地址獲得值,這樣就要從第一個元素找起,多了多步尋址操作,當數據量大且其它操作較少時,這就有差距了。
例如 a[3] = 基地址+sizeof(int )*3 直接能找到a[3]的地址

使用場景

頻繁查詢,很少增加和刪除的情況。

引用:
https://www.cnblogs.com/chenyaqiang/p/5419493.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章