【自定义有序数组】
insert:要插入的value与数组中每个元素进行比较,当有值>value时,此处的index之后的元素整体后移,index位置赋新值;
package com.exiuge.mytest.array; public class MyOrderArray { private long[] arr; /** * 实际数组元素大小 */ private int elementsSize; /** * 初始容量50 */ private static final int initSize=50; public MyOrderArray(){ arr=new long[initSize]; } /** * insert * @param value */ public void insert(long value){ if (elementsSize>=initSize){ throw new ArrayIndexOutOfBoundsException(); } int i; for (i=0;i<elementsSize;i++){ if (arr[i]>value){ break; } } for (int j=elementsSize;j>i;j--){ arr[j]=arr[j-1]; } arr[i]=value; elementsSize++; } /** * 展示全部 */ public void display(){ System.out.println("["); for (int i=0;i<elementsSize;i++){ System.out.print(arr[i]+" "); } System.out.println("]"); } /** * 根据value找下标索引 * @param value * @return */ public int findByValue(long value){ int i; for (i=0;i<elementsSize;i++){ if (arr[i]==value){ break; } } if (i==elementsSize){ return -1; }else { return i; } } /** * 根据下标索引找value * @param index * @return */ public long findByIndex(int index){ if (index>=elementsSize || index<0){ throw new ArrayIndexOutOfBoundsException(); }else { return arr[index]; } } /** * 根据下标索引删除value * @param index */ public void deleteByIndex(int index){ if (index>=elementsSize || index<0){ throw new ArrayIndexOutOfBoundsException(); }else { for (int i=index;i<elementsSize;i++){ arr[index]=arr[index+1]; } elementsSize--; } } /** * 根据下标索引进行修改value * @param index * @param newValue */ public void updateByIndex(int index,long newValue){ if (index>=elementsSize || index<0){ throw new ArrayIndexOutOfBoundsException(); }else { arr[index]=newValue; } } }