概念:把数据码成一排进行存放。
代码:
package com.company;public class Array<泛型> {private 泛型[] data;private int size;public Array(int capacity){data = (泛型[])new Object[capacity];size = 0;}public Array(){this(10);}//返回数组里的当前最大下标值public int getSize(){return size;}//返回数组内容个数public int getCapacity(){return data.length;}//判断数组是否为空public boolean isEmpty(){return size == 0;}//向末尾添加public void addLast(泛型 e){this.add(size, e);}//在第一位插入public void addFirst(泛型 e){add(0, e);}//在某一位插入public void add(int index, 泛型 e){if (size == data.length){resize(2 * data.length);}if (index < 0 || index > size){throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size");}for (int i = size-1; i>= index ;i--){data[i+1] = data[i];}data[index] = e;size++;}//获取index索引位置的元素public 泛型 get(int index){if (index<0 || index>=size){throw new IllegalArgumentException("Get failed. Index is illegal");}return data[index];}//修改index索引位置的元素public void set(int index,泛型 e){if (index<0 || index>=size){throw new IllegalArgumentException("Set failed. Index is illegal");}data[index] = e;}//查看数组中是否有元素epublic boolean contains(泛型 e){for(泛型 i : data){if (i.equals(e)){return true;}}return false;}//查找数组中元素e所在索引,如果不存在元素e,则返回-1public int find(泛型 e){for (int i = 0 ; i<size ; i++){if (data[i].equals(e)){return i;}}return -1;}//从数组中删除index位置的元素,返回删除的元素public 泛型 remove(int index){if (index<0 || index>=size){throw new IllegalArgumentException("Set failed. Index is illegal");}泛型 ret = data[index];for (int i = index+1; i<size; i++){data[i-1] = data[i];}size--;//data[size] = null;if (size == data.length / 4 && data.length /2 != 0){resize(data.length / 2);}return ret;}//删除第一个元素,返回删除的元素public 泛型 removeFirst(){return remove(0);}//删除最后一个元素,返回删除的元素public 泛型 removeLast(){return remove(size-1);}//从数组中删除元素epublic void removeElement(泛型 e){int index = find(e);if (index != -1){remove(index);}}@Overridepublic String toString(){StringBuilder res = new StringBuilder();res.append(String.format("Array: size = %d , capacity = %d\n" ,size , data.length));res.append('[');for (int i = 0; i<size ;i++){res.append(data[i]);if (i != size-1){res.append(",");}}res.append("]");return res.toString();}private void resize(int newCapacity){泛型[] newData = (泛型[]) new Object[newCapacity];for (int i = 0; i<size; i++){newData[i] = data[i];}data = newData;}}
package com.company;public class Main {public static void main(String[] args) {/*静态数组:int[] arr = new int[10];for (int i : arr)System.out.println(i);System.out.println("--------------------------------------");int[] scores = new int[]{100, 99, 66};for (int i : scores)System.out.println(i);System.out.println("-------------------------------------------");scores[0] = 98;for (int i : scores)System.out.println(i);System.out.println("-------------------------------------------");*///动态数组:Array<Integer> arr2 = new Array<>();for (int i=0; i<10; i++){arr2.addLast(i);}System.out.println(arr2);arr2.add(1, 100);System.out.println(arr2);arr2.remove(2);arr2.removeElement(4);arr2.removeElement(0);System.out.println(arr2);}}
一维数组
可以存放上千万个数据,并且这些数据类型是相同的。
声明数组格式:
//方式一:int a[];a = new int[3];a[0] = 0;a[1] = 1;a[2] = 2;//方式二:int a[] = new int[3];a[0] = 0;a[1] = 1;a[2] = 2;//方式三:int a[] = {0 , 1, 2};
相关的API方法
拷贝
public class ShuZuKaoBei {public static void main(String[] args) {int a1[] = {1,2,3,4,5};int a2[] = {9,8,7,6,5,4,3};System.arraycopy(a1, 0, a2, 0, 3);//执行数组拷贝的操作System.out.print("a1数组中的内容:");for (int a : a1) {System.out.print(a + " ");}System.out.println();System.out.print("a2数组中的内容:");for (int a : a2) {System.out.print(a + " ");}System.out.println("\n 数组拷贝完成!");}}//输出内容:a1数组中的内容:1 2 3 4 5a2数组中的内容:1 2 3 6 5 4 3数组拷贝完成!
System.arraycopy(source,0,dest,0,x):
复制源数组从下标0开始的x个元素到目标数组,从目标数组的下标0所对应的位置开始存取。
排序
public class ShuZuPaiXu{public static void main(String[] args){int a[] = {4,32,45,32,65,32,2};System.out.print("数组排序前的顺序:");for (int aa : a){System.out.print(a + " ");}Arrays.sort(a);//数组的排序方法System.out.print("\n 数组排序后的顺序");for (int aa : a){System.out.print(a + " ");}}}//输出内容:数组排序前的顺序:4 32 45 32 65 32 2数组排序后的顺序:2 4 32 32 32 45 65
Arrays.sort(数组名):
数组的排序方法,在java.util包里,使用的时候需要先导入。
