练习:自己写一个容器ArrayList集合 一一数组综合练习

时间:2023-03-09 02:29:19
练习:自己写一个容器ArrayList集合 一一数组综合练习
 package cn.bjsxt.myCollection;

 import java.util.Arrays;

 /**
* 天下文章一大抄,看你会抄不会抄。
* 模拟Stringbuilder 写一个容器
* 参照源码
*
*
* @author Administrator
*
*/
public class MyArrayList {
/**
* The value is used for object storage.
*/
private Object[]value; /**
* The size is the number of characters used.
*/
private int size; //查看size大小
public int size(){
return size;
}
//是否是空
public boolean isEmpty(){
return size==;
} //构造器
public MyArrayList(){
//value = new Object[16];
this();
} public MyArrayList(int size){
if(size<){ try {
throw new Exception();
} catch (Exception e) { e.printStackTrace();
}
} value = new Object[size];
} //取出对象的方法
public Object get(int index) {
// //index范围[0,size-1]或者[0,index)一样
// if(index<0||index>size-1){
//
// try {
// throw new Exception();
// } catch (Exception e) {
//
// e.printStackTrace();
// }
//
// }
rangeCheck(index);
return value[index];
} //set
public Object set(int index,Object object){
//碰到 索引 都要判断 把下面代码封装成方法
// //index范围[0,size-1]或者[0,index)一样
// if(index<0||index>size-1){
//
// try {
// throw new Exception();
// } catch (Exception e) {
//
// e.printStackTrace();
// }
//
// }
rangeCheck(index);
Object old = value[index];
value[index] = object;
return old;
}
public void rangeCheck(int index){
//index范围[0,size-1]或者[0,index)一样
if(index<||index>size-){ try {
throw new Exception();
} catch (Exception e) { e.printStackTrace();
} }
} //添加方法
public void add(Object obj){
value[size]=obj;
size++;
if(size>=value.length){
//装不下了 扩容吧
int newCapacity = value.length*+;
Object[]newList = new Object[newCapacity]; //System.arraycopy(src, srcPos, dest, destPos, length); for(int i=;i<value.length;i++){
newList[i] = value[i];
}
value = newList;
}
} //查某个对象的下标值
public int indexOf(Object obj){
if(obj==null){
return -;
}else{
for(int i=;i<value.length;i++){
if(obj==value[i]){
return i;
}
}
return -;
}
}
//倒着第一次出现某个对象的下标值
public int lastIndexOf(Object obj){
if(obj==null){
return -;
}else{
for(int i=value.length-;i>=;i--){
if(obj==value[i]){
return i;
}
}
return -;
}
} public static void main(String[] args) {
MyArrayList list = new MyArrayList();
list.add("aaa");
list.add(new Human("小高"));
list.add("bbb"); Human h=(Human)list.get(); System.out.println(list.get());
System.out.println(h.getName());
/**
*上面创建3个对象 你查第四个 不存在的
*System.out.println(list.get(3));
*越界异常
*java.lang.Exception
* at cn.bjsxt.myCollection.MyArrayList.get(MyArrayList.java:62)
* at cn.bjsxt.myCollection.MyArrayList.main(MyArrayList.java:82)
*/
System.out.println(list.size());
} }