首先我们先了解一下数组基础知识
一,创建数组
二,访问数组数据项
三,数组的初始化
1:创建一个数组我们可以long[]array = new int[10];
2:访问数组的数据项,我们可以用下标来访问比如array[0] = 123;
3:数组的初始化:我们可以直接创建的时候指定初始化的值比如:long[]arr = new long[]{2,3,4}
上述就是数组的一些基础的知识,我们了解过基础知识之后就开始我们的面向对象的编程。
我们来创建自己的数组,不用Java自带的数组。
我们创建一个类(MyArray)
代码:
package shuzu; //使用自定义类来实现自己的方法 public class MyArray { private long[]arr; //表示有效的数据的长度 private int elements; public MyArray(){ arr = new long[50]; } public MyArray(int maxsize){ arr = new long[maxsize]; } /** * 添加数据 */ public void insert(long value){ arr[elements] = value; elements++; } /** * 显示数据 */ public void display(){ System.out.print("["); for (int i = 0;i<elements;i++) { System.out.print(arr[i]+" "); } System.out.println("]"); } /** * 查找数据 */ public int search(long value){//根据值查找返回索引 int i; for (i = 0;i<elements;i++) { if (value == arr[i]) { break; } } if (i == elements) { return -1; }else{ return i; } } /** * 查找数据,根据索引来查 */ public long get(int index){ if (index >=elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { return arr[index]; } } /** * 删除数据 */ public void delete(int index){//根据索引删除数据 if (index >=elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else{ for(int i = index;i<elements;i++){//i从index开始 arr[index] = arr[index+1]; } elements--; } } /** * 更新数据 */ public void change(int index,int newvalue){ if (index >=elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { arr[index] = newvalue; } } }
上述讲的就是普通数组的增删改查,下面我们说一下有序数组的操作,有序数组的实现,主要是你在插入元素的时候,按照一定的顺序插入就可以比如:
package shuzu; public class MyOrderArray { private long[]arr; //表示有效的数据的长度 private int elements; public MyOrderArray(){ arr = new long[50]; } public MyOrderArray(int maxsize){ arr = new long[maxsize]; } /** * 添加数据(实现有序数组) */ public void insert(long value){ int i; for (i = 0;i<elements;i++) { if (arr[i] > value) { break; } } //数组中的数据先移动从后面开始 for (int j = elements;j>i;j--) { arr[j] = arr[j-1]; } arr[i] = value; elements++; } /** * 显示数据 */ public void display(){ System.out.print("["); for (int i = 0;i<elements;i++) { System.out.print(arr[i]+" "); } System.out.println("]"); } /** * 查找数据 */ public int search(long value){//根据值查找返回索引 int i; for (i = 0;i<elements;i++) { if (value == arr[i]) { break; } } if (i == elements) { return -1; }else{ return i; } } /** * 查找数据,根据索引来查 */ public long get(int index){ if (index >=elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { return arr[index]; } } /** * 删除数据 */ public void delete(int index){//根据索引删除数据 if (index >=elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else{ for(int i = index;i<elements;i++){//i从index开始 arr[index] = arr[index+1]; } elements--; } } /** * 更新数据 */ public void change(int index,int newvalue){ if (index >=elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { arr[index] = newvalue; } } /** * 二分查找,是基于数据是有序 */ public int binary(long value){ int middle = 0; int low = 0; int pow = elements; while (true) { middle = (low+pow)/2; if (arr[middle] == value) { return middle; }else if (low > pow) { return -1; }else{ if (arr[middle] > value) { pow = middle-1; }else{ low = middle+1; } } } } public static void main(String[] args) { MyOrderArray arrayorder = new MyOrderArray(); arrayorder.insert(80); arrayorder.insert(30); arrayorder.insert(20); arrayorder.insert(10); arrayorder.insert(90); arrayorder.display(); System.out.println(arrayorder.binary(90)); arrayorder.delete(3); arrayorder.display(); } }
好了今天的第一讲就到这,大家可以复制代码,练练。