①、如何插入一條新的數據項java
②、如何尋找某一特定的數據項算法
③、如何刪除某一特定的數據項數組
④、如何迭代的訪問各個數據項,以便進行顯示或其餘操做數據結構
package arrays; import java.util.Arrays; public class MyArray { private int[] intArray; private int elems; private int length; /** * 默認建立一個長度爲50的素組 */ public MyArray(){ elems = 0; length = 50 ; intArray = new int[length]; } /** * 自定義數組長度 * @param length */ public MyArray(int length){ elems = 0; this.length = length; intArray = new int[length]; } public int getSize(){ return elems; } /** * 遍歷數組 */ public void display(){ for(int i=0;i<elems;i++){ System.out.println(intArray[i]); } } /** * 添加元素, * 添加成功返回true,添加的元素超過範圍了返回false * @param value * @return */ public boolean add(int value){ if(elems == length){ return false; } intArray[elems] = value; elems++; return true; } /** * 根據下標獲取元素 * * @param index * @return */ public int get(int index) { if(index<0 || index>elems){ System.out.println("數組元素越界"); } return intArray[index]; } /** * 查找元素 * * @return 若是找到則返回元素下標,若是不存在則返回-1 */ public int search(int value){ for(int i=0;i<elems;i++){ if(intArray[i] == value){ return i; } } return -1; } /** * 刪除元素 * @param value * @return 刪除成功返回true,刪除的值不存在返回false */ public boolean delete(int value){ int index = search(value); if(index != -1){ if(index == elems-1){ //恰好是最後一個元素 elems--; }else{ //將目標元素索引以後的元素所有往前移一位 for(int i=index;i<elems;i++){ intArray[i] = intArray[i+1]; } elems--; } return true; }else{ System.out.println("該值不存在"); return false; } } /** * 修改值 * @param oldValue * @param newValue * @return 修改爲功返回true,失敗返回false */ public boolean modify(int oldValue ,int newValue){ int index = search(oldValue); if(index == -1){ System.out.println("修改失敗:該值不存在"); return false; }else{ intArray[index] = newValue; return true; } } }
測試:測試
public static void main(String[] args) { MyArray myArray = new MyArray(7); myArray.add(1); myArray.add(10); myArray.add(15); myArray.add(20); myArray.add(25); myArray.display(); System.out.println("第0個元素爲="+myArray.get(0)); myArray.delete(1); System.out.println("刪除後的數組爲"); myArray.display(); myArray.modify(15,1555); System.out.println("修改後的數組爲"); myArray.display(); }
結果:this
數組的侷限性分析:spa
①、插入快,對於無序數組,上面咱們實現的數組就是無序的,即元素沒有按照從大到小或者某個特定的順序排列,只是按照插入的順序排列。無序數組增長一個元素很簡單,只須要在數組末尾添加元素便可,可是有序數組卻不必定了,它須要在指定的位置插入。code
②、查找慢,固然若是根據下標來查找是很快的。可是一般咱們都是根據元素值來查找,給定一個元素值,對於無序數組,咱們須要從數組第一個元素開始遍歷,直到找到那個元素。有序數組經過特定的算法查找的速度會比無需數組快,後面咱們會講各類排序算法。blog
③、刪除慢,根據元素值刪除,咱們要先找到該元素所處的位置,而後將元素後面的值總體向前面移動一個位置。也須要比較多的時間。排序
④、數組一旦建立後,大小就固定了,不能動態擴展數組的元素個數。若是初始化你給一個很大的數組大小,那會白白浪費內存空間,若是給小了,後面數據個數增長了又添加不進去了。
很顯然,數組雖然插入快,可是查找和刪除都比較慢,並且擴展性差,因此咱們通常不會用數組來存儲數據,那有沒有什麼數據結構插入、查找、刪除都很快,並且還能動態擴展存儲個數大小呢,答案是有的,可是這是創建在很複雜的算法基礎上,後面咱們也會詳細講解。