• 数组


    1.什么是数组?

               数组是一种线性的数据结构.它同一组连续的内存空间,来存储一组具有相同类型的数据结构

    2.代码实现数组的增删改查的功能

    /**
     * 数组实现增删改查的操作
     */
    public class ArrayListDemo {
    private Object[] elementData; private int size; public ArrayListDemo() { this(10); } public ArrayListDemo(int initCapacity) { if (initCapacity < 0) { throw new RuntimeException("参数输入确:" + initCapacity); } elementData = new Object[initCapacity]; } //判断容器的大小 public int size() { return size; } //判断容器是否为空 public boolean isEmpty() { return size == 0; } //判断添加的元素是否越界 private void rangeCheck(int index) { if (index >= size) throw new IndexOutOfBoundsException(outOfBoundsMsg(index)); } private String outOfBoundsMsg(int index) { return "Index: " + index + ", Size: " + size; } //添加元素 public void add(Object data) { ensureCapacity(); elementData[size++] = data; } //扩容的操作 private void ensureCapacity(){ if (size == elementData.length) { Object[] newArray = new Object[size * 2]; System.arraycopy(elementData, 0, newArray, 0, elementData.length); elementData = newArray; } } //在某一个位置向容器中添加元素 public void add(int index,Object object){ rangeCheck(index); ensureCapacity(); System.arraycopy(elementData,index,elementData,index+1,size-index); elementData[index]=object; size++; } //修改某一索引下的元素 public void update(int index,Object object){ rangeCheck(index); elementData[index]=object; } //获得某一索引下的值 public Object get(int index) { rangeCheck(index); return elementData[index]; } //移除某一索引下的值 public void remove(int index){ rangeCheck(index); int numMove=size-index-1; if (numMove>0){ System.arraycopy(elementData,index+1,elementData,index,size-index-1); } elementData[-size]=null; } public void remove(Object object){ for (int i = 0; i <size ; i++) { if (elementData[i].equals(object)){ remove(i); } } } //遍历数组中所有元素的值 public void list(){ for (int i = 0; i <elementData.length ; i++) { System.out.println(elementData[i]); } }

    3.数组和容器的联系和区别?

       数组和集合的相似点:都是可以存储多个对象,对外作为一个整体而存在。

       数组的缺点:长度必须在初始化的时候就确定了,数组采用的是连续的存储空间,添加和删除的效率低,不能实现动态的扩容操作。

    4.Java底层容器能否完全替换数组?

    (1).在Java中提供的容器类,ArrayList最大的优点就是可以将很多数组操作的细节封装起来,便于调用,另一个优点是支持动态扩容。

    (2).数组本身在定义的时候预先指定了大小,因为需要分配连续的内存空间,如果我们分配了大小为10的数组,当第11个元素需要存储到数组当中时,我们需要重新分配一块更大的空间,将原来的数据复制过去,然后将新的数据插入。

    (3).使用ArrayList,我们完全不需要关心底层的扩容逻辑,ArrayList 已经帮我们实现好了,存储空间不够的时候,会将空间自动扩容1.5倍的大小。

    (4).ArrayList无法存储基本的数据类型,(8种基本数据类型),而是引用类型,所以基本数据类型,可以选用数组.

    每天进步一丢丢

    完成。

     

  • 相关阅读:
    请求重定向,请求转发
    post、get方法乱码问题
    Servlet
    修改Servlet模板,让Servlet更清新
    Java-Python对垒之质数计算
    使用Packet Tracer对不同网段组网模拟
    哑编码的两种方法
    AdaBoost scikit-learn相关参数
    KNN scikit-learn相关参数
    递归思想的应用-根据二叉树的中序遍历和前序遍历重建二叉树
  • 原文地址:https://www.cnblogs.com/xiaofuzi123456/p/11651331.html
Copyright © 2020-2023  润新知