JAVA中ArrayList下的源码
##两个部分,ArrayList源码和输入下标错误的异常,异常放在最后。
import java.util.Arrays;
public class MyarryList {
private int[] arrys;
private int usesize;
//构造方法初始化顺序表
public MyarryList(){
this.arrys = new int[10];
this.usesize = 0;
}
//获取顺序表长度
public int size(){
return this.usesize;
}
//打印顺序表
public void display(){
System.out.println("表中有数据"+usesize+"个");
for (int i = 0; i < this.usesize; i++) {
System.out.print(arrys[i]+" ");
}
}
//默认在表中尾部增加数据
public void add(int data){
if(isfull()) {
addcopy();
arrys[usesize] = data;
usesize ++;
} else {
arrys[usesize] = data;
usesize ++;
}
}
//在指定下标添加元素
public void add(int data,int i){
if(isfull()) {
addcopy();
isright(i);
for (int j = usesize-1; j > 0; j--) {
arrys[j+1] = arrys[j];
}
arrys[i] = data;
usesize++;
} else {
isright(i);
for (int j = usesize-1; j >= 0; j--) {
arrys[j+1] = arrys[j];
}
arrys[i] = data;
usesize++;
}
}
//判断表中是否包含某个元素
public boolean contains(int data){
for (int i = 0; i < this.usesize; i++) {
if(arrys[i] == data){
return true;
}
}
return false;
}
// 查找某个元素对应的位置
public int indexOf(int data) {
if(contains(data)){
for (int i = 0; i <this.usesize ; i++) {
if(arrys[i] == data){
return i;
}
}
return -1;
} else {
return -1;
}
}
//查找某个下标的元素
public int get(int i){
if(isright(i)){
return arrys[i];
} else {
return -1;
}
}
//删除某个元素
public void remove(int data){
int i = indexOf(data);
for (int j = i; j < usesize-1 ; j++) {
arrys[j] = arrys[j+1];
}
usesize--;
}
//设置某个位置的值
public void set(int i,int data){
isright(i);
arrys[i] = data;
}
//清空数据表
public void claer(){
usesize = 0;
}
//判断表中数据是否装满
public boolean isfull(){
if(this.usesize == arrys.length){
return true;
} else {
return false;
}
}
//顺序表中长度不够是需要扩容
public void addcopy(){
//扩容长度为原来的两倍,可自己决定
arrys = Arrays.copyOf(arrys,usesize * 2);
}
//检查下标是否合法
public boolean isright(int i){
if(i < 0 || i >= this.usesize){
throw new WrongadressException("你给的下标有问题");
} else {
return true;
}
}
}
public class WrongadressException extends RuntimeException{
//两个构造方法,一个无参构造,一个提示错在哪里
public WrongadressException(){
}
public WrongadressException(String wrong){
super(wrong);
}
}