java动态数组arraylist该如何使用?什么是arraylist?

TheDisguiser 2020-06-09 11:26:22 java常见问答 8928

Java中有着许多数组,但是也分别动态数组与静态数组,ArrayList 就是其中一个动态数组,下面就让我们来看看它有哪些概念及如何使用吧。

一、ArrayList 是什么?

ArrayList集合:又名动态数组,可以容纳任意长度,任意类型的对象(不包括基本类型)List是有序的集合,所以和父接口Collection相比,多的是带下标的操作,它实现了Collection和List接口,能够灵活的设置数组的大小,它还能动态的增加和减少元素。

二、ArrayList 要怎么使用?

例1:

package Collection;
//自己实现ArrayList to help understand unearneath
public class TestList
{
    //核心就是数组 
    private Object[] elementData;
    //数组的长度
    private int size;
    //空构造类
    public TestList()
    {
        this(10);
    }
    //带参数的构造类.
    public TestList(int initialCapacity)
    {
        //容量不能小于零
        if (initialCapacity < 0)
        {
            try
            {
                throw new Exception();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
        elementData = new Object[initialCapacity];
    }
    //主要的方法ADD方法 。
    public boolean add(Object o)
    {
        //数组扩容当这个size超过数组的长度就扩容
        if (size + 1 > elementData.length)
        {
            //你以为事将数组扩大,实际事换一个地方存放
            Object[] newArray = new Object[size * 2 + 1];
            //将数据拷贝到新数组
            for (int i = 0; i < elementData.length; i++)
            {
                newArray[i] = elementData[i];
            }
            elementData = newArray;
        }
        //此时size进行了扩张
        elementData[size++] = o;
        return true;
    }
    //。size方法.
    public int size()
    {
        return elementData.length;
    }
    //是否为空
    public boolean isEmpty()
    {
        boolean f = false;
        if (size == 0) f = true;
        return f;
    }
    //获取对象
    public Object get(int index)
    {
        //下标要进行判断
        if (index < 0 || index >= size)
        {
            try
            {
                throw new Exception();
            }
            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        Object o = elementData[index];
        return o;
    }
    //
    public void remove(int index)
    {
        //下标要进行判断
        if (index < 0 || index >= size)
        {
            try
            {
                throw new Exception();
            }
            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //进行判断。删除以后要将后面的迁移 。
        //这个是后面有的多少个元素个数
        int numMoved = size - index - 1;
        //将后面的元素往前一个覆盖。都不用删除。
        if (numMoved > 0)
            System.arraycopy(elementData, index + 1, elementData, index, numMoved);
        //删除指定对象
        elementData[--size] = null;
    }
    //删除一个指定对象的
    public void remove(Object index)
    {
        for (int i = 0; i < size; i++)
        {
            //循环进行比较用EQUALSE判断.
        }
    }
    public static void main(String args[])
    {
        //first ,depends arrylist.we need to create a number 
        //of array
        //
        TestList list = new TestList();
        list.add("3");
        list.add("3");
        list.remove(1);
        System.out.println("数组有多少元素:" + list.size);
        System.out.println("数组有多少大:" + list.size());
        System.out.println("数组是否为空:" + list.isEmpty());
        //System.out.println("数组是否为空:"+list.get(1));
    }
}

例2:

ArrayList List = new ArrayList();
List.Add(“string”);
List.Add(1);
//往数组中添加不同类型的元素
object[] values = List.ToArray(typeof (object)); //正确 
string[] values = (string[]) List.ToArray(typeof (string)); //错误

例3:

ArrayList List = new ArrayList();
for (int i = 0; i < 10; i++) //给数组增加10个Int元素 
    List.Add(i);
//..程序做一些处理 
List.RemoveAt(5); //将第6个元素移除 
for (int i = 0; i < 3; i++) //再增加3个元素 
    List.Add(i + 20);
Int32[] values = (Int32[]) List.ToArray(typeof (Int32)); //返回ArrayList包含的数组

以上就是关于ArrayList的所有内容了,如若还需要了解更多相关java入门知识,就快来关注奇Q工具网吧。

推荐阅读:

arraylist扩容机制要怎么实现?arraylist怎么扩容

arraylist类具体有什么概念?常用方法有哪些?

arraylist和linklist区别分别有哪些?