java基础
自己手写的ArrayList源代码
public class MyArrayList {
private int size=0;//数组实际存储数据的个数
String [] arr=new String[3];//ArrayList底层存储数据使用数组
public void add(String str){
//在添加数据之前进行判断,如果添加前数据已满则创建新的数组之后进行添加
if (arr.length==size){
toLongArray();
}
arr[size++]=str;
}
private void toLongArray() { //创建一个更长的数组并将原数据存入
int len=arr.length;//当前长度
int newLen=len*3/2;//数组存满后扩容三分之二
String[] newArray=new String[newLen];
for (int i=0;i<size;i++){
newArray[i]=arr[i];
}
arr=newArray;//将新数组赋值给原数组变量
}
public int getSize(){
return size;
}
@Override
public String toString(){
StringBuffer sb=new StringBuffer();
for (int i=0;i<size;i++){
sb.append(arr[i]+",");//拼接字符串
}
if (sb.length()>0){ //调用方法删除最后一个标点符号
sb.deleteCharAt(sb.length()-1);
}
return sb.toString();
}
public static void main(String[] args){
MyArrayList list=new MyArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
list.add("fff");
list.add("ggg");
System.out.println(list);
System.out.println("数据个数:"+list.getSize());
System.out.println("数组长度:"+list.arr.length);
}
}