数据结构复习1.array

xiaoxiao2021-02-27  143

注意点:

(1) array.length; //没有括号

(2) Reference类型注意null

(3) Arrays.sort(a);//排序

(4) Arrays.toString(a)//print

(5) copy

a = Arrays.copyOf(b, b.length);

System.arrayCopy(a, 0, b, 0, b.length);

1. 特点

Arrays have a FIELD ====> immutable

FOR:

the amount of data is (1) reasonably small (2) predictable

2. 运算

(1) equals

a == b;                        ------ identity

a.equals(b);                ------ identity

Arrays.equal(a, b);     ------ content。 调用每一个对象的equals方法,即使identity不等,equals方法的结果相等时,Array.equals依然为true。

(2) sort

Arrays.sort(a);

(3) print

System.out.println(a);                               ---------[ ]@xxxx

System.out.println(Arrays.toString(a));    ---------[0, 1, 2, 3, 4, 5]

(4) copy--shallow copy

a = Arrays.copyOf(b, b.length);

System.arrayCopy(a, 0, b, 0, b.length);

a = b.clone;

import java.util.Arrays; public class Array { public static void main(String[] args) { /* equals */ String[] a = {"my", "heart", "will", "go", "on"}; String[] aNew = {"my", "heart", "will", "go", "on"}; System.out.println(a==aNew); //false. identity System.out.println(a.equals(aNew)); //false. identity System.out.println(Arrays.equals(a, aNew)); //true. content System.out.println(); /* print */ System.out.println(a); //[Ljava.lang.String;@15db9742 System.out.println(Arrays.toString(a)); //[my, heart, will, go, on] System.out.println(); /* copy */ /* 1.different method */ //对其中的每个元素按是shallow copy Test[] b = {new Test(0,"my"), new Test(1,"heart"), new Test(2,"will"), new Test(3,"go"), new Test(4,"on")}; Test[] bArrays = Arrays.copyOf(b, b.length); bArrays[2].value = "0"; System.out.println(Arrays.toString(bArrays)); System.out.println(Arrays.toString(b)); Test[] b1 = {new Test(0,"my"), new Test(1,"heart"), new Test(2,"will"), new Test(3,"go"), new Test(4,"on")}; Test[] bSystem = new Test[b1.length]; System.arraycopy(b1, 0, bSystem, 0, b1.length); bSystem[2].value = "0"; System.out.println(Arrays.toString(bSystem)); System.out.println(Arrays.toString(b1)); Test[] b2 = {new Test(0,"my"), new Test(1,"heart"), new Test(2,"will"), new Test(3,"go"), new Test(4,"on")}; Test[] bClone = b2.clone(); bClone[2].value = "0"; System.out.println(Arrays.toString(bClone)); System.out.println(Arrays.toString(b2)); System.out.println(); /* 2.different length */ String[] aLengthE = Arrays.copyOf(a, a.length); //[my, heart, will, go, on] String[] aLengthA = Arrays.copyOf(a, a.length - 2); //[my, heart, will] String[] aLengthB = Arrays.copyOf(a, a.length + 2); //[my, heart, will, go, on, null, null] System.out.println(Arrays.toString(aLengthE)); System.out.println(Arrays.toString(aLengthA)); System.out.println(Arrays.toString(aLengthB)); System.out.println(); //aLengthB = new String[a.length - 2]; //System.arraycopy(a, 0, aLengthB, 0, a.length); //ArrayIndexOutOfBoundsException //System.out.println(Arrays.toString(aLengthB)); aLengthA = new String[a.length + 2]; //[my, heart, will, go, on, null, null] System.arraycopy(a, 0, aLengthA, 0, a.length); System.out.println(Arrays.toString(aLengthA)); /* 3.sort */ Arrays.sort(a); System.out.println(Arrays.toString(a)); //[go, heart, my, on, will] } private static class Test { int key; String value; public Test(int a, String b) { key = a; value = b; } @Override public String toString() { return key + " " + value; } } }

3. 复杂度(最坏情况)

插入(最前): O(n)

插入(最后):O(1)

插入(中间):O(n)

查找(linear search):O(n)

删除:O(n)

index查找:O(1)

其它:array的index是从0开始,为了方便直接查找。可参见c中数组指针的用法。

转载请注明原文地址: https://www.6miu.com/read-16952.html

最新回复(0)