zoukankan      html  css  js  c++  java
  • 浅谈Array和ArrayList的区别

    参考:http://www.cnblogs.com/a164266729/p/4561651.html

    (1)ArrayList是Array的复杂版本

    ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

    (2)存储的数据类型

    ArrayList可以存储异构对象,而Array只能存储相同数据类型的数据。

    (3)长度的可变

    Array的长度实际上是不可变的,二维变长数组实际上的长度也是固定的,可变的只是其中元素的长度。而ArrayList的长度既可以指定(即使指定了长度,也会自动2倍扩容)也可以不指定,是变长的。

    (4)存取和增删元素

    对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。另外,ArrayList是动态数组,它不包括通过Key或者Value快速访问的算法,所以实际上调用IndexOf、Contains等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作优化来的快,如果有这方面的要求,建议使用Hashtable或SortedList等键值对的集合。

    好了,关于这两个数据结构的对比我们就到这里,如果有觉得不妥的地方,欢迎大家指正。

    附Array和ArrayList的相互转换:

    public class Test { 
    public static void main(String[] args) { 
    List<String> list=new ArrayList<String>(); 
    list.add("王利虎"); 
    list.add("张三"); 
    list.add("李四"); 
    int size=list.size(); 
    String[] array = (String[])list.toArray(new String[size]); 
    for(int i=0;i<array.length;i++){ 
    System.out.println(array[i]); 
    } 
    } 
    }
    
     
    package test.test1; 
    
    import java.util.Arrays; 
    import java.util.List; 
    
    public class Test { 
    public static void main(String[] args) { 
    String[] array=new String[3]; 
    array[0]="王利虎"; 
    array[1]="张三"; 
    array[2]="李四"; 
    List<String> list=Arrays.asList(array); 
    for(int i=0;i<list.size();i++){ 
    System.out.println(list.get(i)); 
    } 
    } 
    }
  • 相关阅读:
    AGC算法
    Cordic算法
    git Remote: HTTP Basic: Access denied Git failed with a fatal error.
    mysql 定义用户变量
    Docker 报错处理
    IIS,Docker 部署.Net Core
    SpringBoot向后台传参的若干种方式
    修改Mysql 数据库以及表字符集
    安装Docker
    获取北京时间
  • 原文地址:https://www.cnblogs.com/liulin1187740947/p/9164870.html
Copyright © 2011-2022 走看看