美文网首页
2018-09-27模拟ArrayList底层实现、

2018-09-27模拟ArrayList底层实现、

作者: 消失的七月 | 来源:发表于2018-09-28 10:34 被阅读0次

1.模拟ArrayList底层实现:

public class MyArrayList {

    StringBuilder s;//防照StringBuilder

    ArrayList a;//在查看Arraylist的一些简单方法

    /**

    *  The value is used for Object storage.

    */

    private Object[] value; 

    /**

    * The size is the number of Objects used.

    */

    private int size;

    public MyArrayList(){

        //value = new Object[16];

        this(10);

    }

    /**

    * Creates an MyArrayList of the specified capacity

    * 指定容量

    */

    public MyArrayList(int size){

        if(size < 0){

        try {

            throw new Exception();

        } catch (Exception e) {

            e.printStackTrace();

    }

}

    value = new Object[size];

}

    public void add(Object obj){

        value[size] = obj;

        size++;

        if(size >= value.length){

    //默认为10,大了的时候需要扩容

    int newCapacity = value.length * 2;

    Object[] newList = new Object[newCapacity];

    // System.arraycopy(src, srcPos, dest, destPos, length);

    for(int i = 0;i < value.length;i++){

        newList[i] = value[i];

    }

    value = newList;

    }

}

    public Object get(int index){

    if(index < 0 || index > size-1){

        try {

            throw new Exception();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    return value[index];

}

    public int size(){

        return size;

}

public boolean isEmpty() {

        return size == 0;

}

public boolean contains(Object o){

        return Indexof(o) >= 0;

}

private int Indexof(Object o) {

    if(o == null){

        for(int i = 0; i < size; i++)

            if(value[i] == null)

            return i;

    }else{

        for (int i = 0; i < size; i++)

                if (o.equals(value[i]))

                    return i;

    }

    return -1;

}

    //从头开始检索

    public int indexOf(Object o){

        if(o == null){

        for(int i = 0; i < size; i++){

            if(value[i]==null)

                return i;

    }

    }else{

        for(int i =0;i < size; i++){

            if(o.equals(value[i]))

                    return i;

    }

    }

    return -1;

}

public int lastIndexOf(Object o){

    if(o == null){

        for(int i = size - 1; i >= 0; i--){

            if(value[i]==null)

                return i;

    }

    }else {

        for(int i = size-1;i >= 0; i--){

            if(o.equals(value[i]))

            return i;

    }

}

    return -1;

}

public static void main(String[] args) {

    MyArrayList myList = new MyArrayList(2);//初始化为16,所以超过是应当去扩容

        myList.add("1");

        myList.add(2);

        myList.add(3);

        myList.add(2);

        myList.add(3);

        myList.add(2);

        myList.add(3);

        System.out.println(myList.get(0));//1

        System.out.println(myList.size);//7

        System.out.println(myList.isEmpty());//false

        System.out.println(myList.contains(null));//false

        System.out.println(myList.lastIndexOf(3));//6

    }

}

相关文章

  • 2018-09-27模拟ArrayList底层实现、

    1.模拟ArrayList底层实现: public class MyArrayList { StringBuild...

  • ArrayList和LinkedList的区别

    ArrayList底层由数组实现,LinkedList底层由链表实现。 通常来说:ArrayList在随机访问元素...

  • ArrayList/Vector 的底层分析

    ArrayList/Vector 的底层分析 ArrayList ArrayList 实现于 List、Rando...

  • java

    1、Arraylist和Linkedlist区别 (1)ArrayList 底层实现就是数组,且ArrayList...

  • Java集合

    ArrayList和LinkedList的区别和底层实现?如何实现线程安全? 数据结构实现:ArrayList 是...

  • Java基础--ArrayList

    ArrayList简介 ArrayList实现了List接口,继承了AbstractList,底层是数组实现的。它...

  • 栈和队列

    ArrayList和LinkedList的实现方式 ArrayList的底层实现是可以增长的数组,LinkedLi...

  • ArrayList

    基本使用 问题 Q:ArrayList底层实现是什么?A:底层实现是数组,ArrayList内部定义了一个数组来存...

  • ArrayList详解,自动扩容原理

    首先:ArrayList的底层通过数组实现 ArrayList:说明ArrayList支持泛型。extend...

  • ArrayList 与 LinkedList 的实现和区别

    ArrayList 的实现 ArrayList 底层是通过数组实现的,其数据保存在 transient Objec...

网友评论

      本文标题:2018-09-27模拟ArrayList底层实现、

      本文链接:https://www.haomeiwen.com/subject/ubueoftx.html