package cn.itsource_06IntArrayMethod;
import java.util.Arrays;
/*自定义容器增删改查数组实现
**/
public class IntArray {
Object [] data;
int size;
public IntArray(){
this(5);
}
public IntArray(int length){
data = new Object[length];
}
void add(Object i){
if(size>=data.length){
Object[] newarr = new Object[size+10];
System.arraycopy(data, 0, newarr, 0, size);
data = newarr;
}
data[size] = i;
size++;
}
int size(){
return size;
}
@Override
public String toString() {
Object[] newarr = new Object[size];
System.arraycopy(data, 0, newarr, 0, size);
return Arrays.toString(newarr);
}
//索引越界抛出异常
public Object getElementByTndex(int index){
if(index<0||index>=size){
throw new ArrayIndexOutOfBoundsException("索引越界,应该在:0~"+(size-1));
}
return data[index];
}
public int getIndexByElement(Object obj){
for(int i = 0;i < size; i++){
if(obj.equals(data[i])){
return i;
}
}
return -1;
}
/*1.删除指定索引处的元素
* */
public void delElementByIndex(int index){
if(index<0||index>=size)
throw new ArrayIndexOutOfBoundsException("索引越界,应该在:0~"+(size-1));
System.arraycopy(data, index+1, data, index, size-index-1);
size--;
}
/* 2.删除指定的第一个元素
* 1.根据元素查找索引
* 2.根据索引删除元素
* */
public void delFirstElement(Object obj){
int index = getIndexByElement(obj);
delElementByIndex(index);
}
}
package cn.itsource_06IntArrayMethod;
public class test {
public static void main(String[] args) {
IntArray ia = new IntArray(10);
ia.add(20);
ia.add("你好");
ia.add(30);
ia.add(30);
ia.add(30);
ia.add(10);
ia.add(30);
ia.add(30);
ia.add(30);
int size = ia.size();
System.out.println(ia);
System.out.println(size);
Object elementByTndex = ia.getElementByTndex(1);
System.out.println(elementByTndex);
int intdexByElement = ia.getIndexByElement(10);
System.out.println(intdexByElement);
ia.delElementByIndex(1);
System.out.println(ia.size());
System.out.println(ia);
ia.delFirstElement(30);
System.out.println(ia.size());
System.out.println(ia);
}
}