其他分享
首页 > 其他分享> > 集合&实现自己的简单MyArrayList

集合&实现自己的简单MyArrayList

作者:互联网

一、数组

​ 数组是java语言内置的数据类型,它是一个线性的序列,所以可以快速的访问其他元素,数组和其他数据类型不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期内也是不能改变的。JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,检查边界的代价是效率。

二、集合

JAVA还提供其他集合,list,map,set,它们处理对象的时候就好像这些对象没有自己的类型一样,而是直接归根于Object,这样只需要创建一个集合,把对象放进去,取出时转换成自己的类型就行了。

三、数组和集合的区别

  1. 数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合可以动态扩展容量,可以根据需要动态改变大小。
  2. 数组的存放类型只能是一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)
  3. 数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的
package array;

import java.util.Arrays;

public class ArrayTest7 {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        myArrayList.insert("1");
        myArrayList.insert("2");
        myArrayList.insert("3");
        myArrayList.insert("4");
        myArrayList.insert("5");
        myArrayList.insert("6");
        myArrayList.insert("7");
        myArrayList.insert("8");
        myArrayList.insert("9");
        myArrayList.insert("10");
        myArrayList.insert("11");

        myArrayList.display();

        System.out.println(myArrayList.find("8"));
    }
}

class MyArrayList{
    private Object[] arr;
    private int nElems;  //数组的真实长度

    //构造方法,初始化数组
    public MyArrayList(){
        arr = new Object[10];
        nElems = 0;
    }

    //实现插入数据项,注意要实现arr数组的自动扩容
    public void insert(Object o){
        //判断当前nElems有没有越界,如果说现在插入数组的新元素,下标要超过原数组的最大长度,实施扩容
        if (nElems == arr.length) {
            arr = Arrays.copyOf(arr, arr.length + (arr.length >> 1));
        }
        arr[nElems++] = o;
    }

    //遍历
    public void display(){
        for (int i = 0; i < nElems; i++) {
            System.out.print(arr[i] + "    ");
        }
    }

    //查找指定的元素,找到了返回元素在数组中的索引值,找不到返回-1
    public int find(Object o) {
        int i;
        for ( i = 0; i < nElems; i++) {
            if (o.equals(arr[i])) {
                break;
            }
        }
        if (i < nElems) {
            return i;
        } else {
            return -1;
        }
    }

    //删除指定的元素
    public void delete(Object o) {
        int i = find(o);
        if (i != -1) {
            System.arraycopy(arr, i + 1, arr, i, nElems - 1 - i);
            nElems--;
        }
    }
}

标签:insert,arr,nElems,Object,数组,简单,集合,MyArrayList,myArrayList
来源: https://blog.csdn.net/qq_41799736/article/details/110272844