ArrayList (容器)

ArrayList   (容器)-----------(底层实现是数组)

ArrayList 底层实现

小示例(有点绕,理解了,你会进步一大截。学会看源码真的很重要)

Human.java

package cn.Mylist;

public class Human {
    private String name;

    public Human(String name) {
        super();
        this.name = name;
    }

    public String getName() {
        return name;
    }

//    public void setName(String name) {
//        this.name = name;
//    }
    
}

MyArrayList.java

package cn.Mylist;
/*
 * 模拟实现JDK中提供的的ArrayList类
 * */
public class MyArrayList {
    
    
    private Object[] value;
    
    
    private int size=0;
    //定义容器;
//    public  MyArrayList() {
////        value=new Object[16];
//        this(16);    //这个构造器调下一个构造器;
//    }
    public  MyArrayList(int m) {
        value=new Object[m];
    }
public int size() { return size; } //给容器中放东西 public void add(Object o) { value[size]=o; size++; if(size>=value.length) { //装不下了,扩容吧! int Capacity=value.length*2+2; Object[] newlist=new Object[Capacity]; //要把老容器的值保留,把老容器的值拷入新容器; // System.arraycopy(value,0, newlist, 0, size); 第一种 for(int i=0;i<value.length;i++) { //第二种copy方式 newlist[i]=value[i]; } value=newlist; //将其赋给value,老数组value消失 } } //在容器中按照索引取东西; public Object get( int index) { return value[index]; } public static void main(String[] args) { MyArrayList mylist=new MyArrayList(2); mylist.add("haha"); mylist.add(new Human("sun")); mylist.add("sss"); mylist.add("ss"); Human h=(Human)mylist.get(1); //把Object对象强转 System.out.println(mylist.get(1)); System.out.println(h.getName()); System.out.println(mylist.size()); //查找里面的东西 } }

打印结果:

 

posted on 2019-07-17 13:30  Mentality  阅读(247)  评论(0编辑  收藏  举报