`

[面试]数组和arrayList的区别

    博客分类:
  • j2se
阅读更多

今天面试,问我数组和arrayList有什么区别?

我答不上来.

一、数组与ArrayList的主要区别:效率、类型识别和primitive type。
数组([]):最高效;但是其容量固定且无法动态改变;
ArrayList:容量可动态增长;但牺牲效率;
建议:
首先使用数组,无法确定数组大小时才使用ArrayList!



1.效率:
数组扩容是对ArrayList效率影响比较大的一个因素。
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,

在这个临界点的扩容操作,应该来说是比较影响效率的。

ArrayList是Array的复杂版本
ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于

ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

2.类型识别:
ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。

注:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。

从这一点上看来,ArrayList与数组的区别主要就是由于动态增容的效率问题了


3.ArrayList可以存任何Object,如String,Employee等,但不支持基本数据类型,除非使用wrapper。

二、数组与ArrayList的转换(有待补充:见《corejava》110页)
1.ArrayList转换为数组:
ArrayList转换String[]
ArrayList list = new ArrayList();list.add("a");list.add("b");list.add

("c");System.out.println("a="+list);String[] b=(String[])list.toArray

(new String[0]);

2.数组转换为ArrayList(有待补充)

三、Arrays类操纵java中的数组(有待补充)
http://java.ccidnet.com/art/3737/20060627/589715_1.html

四、实现DecisionTree时对ArrayList与String[]的迷惑与解铃(有待补充)

http://www.mysdn.cn/Java/J2SEjichulei/20060914/9172.html

(实际为数组与ArrayList的迷惑)

五、其他
1.数组和ArrayList都表示可以存一组同类型的对象;都使用下标定位和查找元素;
2.数组的定义:
int[] num=new int[10];
Employee[] staff=new Employee[100];

3.ArrayList的使用:
List lst=new ArrayList();
lst.add(employee);

分享到:
评论

相关推荐

    Java面试题-基础-集合有关的知名厂商面试题和基础复习

    ArrayList() 会使用长度为零的数组 ArrayList(int initialCapacity) 会使用指定容量的数组 public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量 add(Object o) 首次扩容为 10,再次扩容为上次...

    Java实习生面试复习(三):ArrayList

    接下来的几个月内,我将坚持写博客,输出知识的同时巩固自己的基础,记录自己的成长和锻炼自己,备战2021暑期实习面试!奥利给!! ArrayList 我们几乎每天都会使用到,本文就一起来看看同样是面试高频问到的...

    Java 最常见的 208 道面试题:第二模块答案

    25. ArrayList 和 LinkedList 的区别是什么? 26. 如何实现数组和 List 之间的转换? 27. ArrayList 和 Vector 的区别是什么? 28. Array 和 ArrayList 有何区别? 29. 在 Queue 中 poll()和 remove()有什么区别? ...

    java猜数字源码-softtest-interview:软件测试工程师or测试开发真实面试题,并附上答案。希望能够节省大家寻找面试题的时间,

    01.数组、list与arrayList区别 数组与ArrayList区别 数组是在内存空间中申请一段连续的内存地址,所以数组的查询速度很快是常量 ArrayList的大小是按照其中存储的数据来动态扩充与收缩的。所以,我们在声明ArrayList...

    今天会是有Offer的一天么:面试时不要再问我ArrayList、LinkedList和CopyOnWriteArrayList的区别了

    ArrayList是一种以数组实现的List,它实现了List, RandomAccess, Cloneable, Serializable接口。 实现List接口表示它可以支持删除、添加和查找等操作。 实现RandomAccess接口表示它可以支持随机访问(强调一点,并不...

    腾讯java面试题合集

    答:①ArrayList和LinkedList可想从名字分析,它们一个是Array(动态数组)的数据结构,一个是Link(链表)的数据结构,此外,它们两个都是对List接口的实现。 前者是数组队列,相当于动态数组;后者为双向链表结构,也...

    Java面试题.docx

    33、ArrayList和LinkedList的区别,以及应用场景 34、数组和链表的区别 35、开启线程的三种方式? 36、线程和进程的区别? 38、run()和start()方法区别 39、如何控制某个方法允许并发访问线程的个数? 40、在...

    涵盖了90%以上的面试题

    在ArrayList和LinkedList尾部添加元素,谁的效率更高 如果HashMap或者hashTable的key是一个自定义的类该怎么办 为什么重写equals还要重写hashCode? 介绍一下volatile jdk1.5新特性 jdk1.7新特性 jdk1.8新特性 java...

    android-interview-questions:根据我的经验在DS,Java和Android上包含面试问题的资料库

    Android面试问题根据我的经验,包含有关DS,Java和Android的面试问题的资料库。注意:我现在不在这里写下答案,因为如果我为您提供答案,您会怎么做? :-)同样,您将只限于那些答案。尝试并深入了解这些概念。对于...

    Java常见面试题208道.docx

    25.ArrayList 和 LinkedList 的区别是什么? 26.如何实现数组和 List 之间的转换? 27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList 有何区别? 29.在 Queue 中 poll()和 remove()有什么区别? 30....

    Java后端面试问题整理.docx

    • 熟悉常用集合数据结构(数组、Hashmap、ConcurrentHashMap、HashTable、ArrayList、Vetor、LinkedList、HashSet、TreeSet、LinkedHashSet),了解AVL、RBtree、B/B+树、跳表 • 熟悉常见异常分类以及处理,熟悉反射...

    JAVA-面试题大全(含答案)

    答:ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,...

    阿里P7面试题包含解答

    Vector,ArrayList, LinkedList的区别是什么? 答: 1. Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形 式进行存储。 2. List中的元素有序、允许有重复的元素,Set中的元素无序、不允许...

    最全面试笔试整合(比较齐全包括网页,文档。。。)

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    华为java经典面试题大总结

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    史上最全java面试,103项重点知识,带目录

    25. ArrayList 和 LinkedList 的区别是什么? 11 26. 如何实现数组和 List 之间的转换? 11 27. ArrayList 和 Vector 的区别是什么? 11 28. Array 和 ArrayList 有何区别? 12 29. 在 Queue 中 poll()和 remove()有...

    ****大公司的面试题.doc

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    JAVA面试题最全集

    链表与散列表和数组的区别 19.堆和栈的区别 20.ejb的分类及区别 21.你对现在软件业以及国内软件业的看法 22.谈谈java多线程 23.谈谈文件加密技术 24.软件开发生命周期 25.路由协议种类及特点 26.java的awt和...

    java面试题

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    面试官都扯不过你系列之集合框架类总结

    文章目录前言框架概述说一说集合类有什么特点及与数组的比较...列出区别heap 和stack 有什么区别如何确保一个集合不会被修改CollectionListArray与ArrayList有什么区别如何实现数组和List之间的转换ArrayList 和LinkedL

Global site tag (gtag.js) - Google Analytics