java-自定义模拟ArrayList

java-自定义模拟ArrayList


学习java 模拟一下ArrayList的实现

package MyCollection;/*
 * @Auther: zpf
 * @Date: 2019/7/12
 * @Description: MyCollection
 * @version:1.0
 */

import java.lang.reflect.Array;
import java.util.Arrays;

public class MyArrayList {

    //MyArrayList底层也是一个Object类型的数组:
    Object[] value;
    //数组中被使用的数量
    int count;


    //空构造器
    public MyArrayList(){
//        value = new Object[10];
        this(10);
    }

    //有参构造器
    public MyArrayList(int length){
        value = new Object[length];
    }

    //添加add方法:
    public void add(Object o){
        value[count]=o;
        count++;
        //长度不够 进行扩容:
        if(count>=value.length){
            Object[] newObj=new Object[value.length*2+1];
            //老数组中的值复制到新数组中:
            //扩容方式一:
            //Object[] newObj= Arrays.copyOf(value,20);
            //扩容方式二:
            for (int i = 0; i <count ; i++) {
                newObj[i]=value[i];
            }
            //value的指向:改成新数组:
            value=newObj;
        }
    }

    //重写toString
    @Override
    public String toString() {

        StringBuilder sb =new StringBuilder();
        sb.append("[");
        if(count!=0){
            for (int i = 0; i < count ; i++) {
                sb.append(value[i]+",");
            }
            sb.setCharAt(sb.length()-1,']');
        }else{
            sb.append("]");
        }

        return sb.toString();
    }

    //计算数组中元素方法:
    public int length(){
        return  count;
    }

    //判断是否为空
    public boolean isEmpty(){
        return count==0;
    }
    //  删除remove方法:
    public void remove(Object o){
        int del=count+1;
        for (int i = 0; i < count ; i++) {
            if(value[i].equals(o)){
                del=i;
                break;
            }
        }
        for (int i = del; i < count-1; i++) {
            value[i]=value[i+1];
        }
        if (del==count+1)
            return;
        else
            count--;
    }
    public static void main(String[] args) {
        //创建一个我自定义数组的对象
        MyArrayList list=new MyArrayList();//底层数组长度为10



        list.add("123");
        list.add("1");
        list.add("2");
        list.add("3");
        System.out.println(list);
        System.out.println(list.length());
        System.out.println(list.isEmpty());
        list.remove("2");
        System.out.println(list);
        System.out.println(list.length());
        System.out.println(list.isEmpty());

    }

}

发布了17 篇原创文章 · 获赞 1 · 访问量 450

猜你喜欢

转载自blog.csdn.net/qq_44641344/article/details/95650324