1、 Array和ArrayList的区别,什么时候更合适用Array

a)      Array是数组,可以容纳基本类型和对象,而ArrayList是集合,只能容纳对象

b)      Array是指定大小的,而ArrayList的大小是动态的

c)      Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等,

d)      适合用Array的情况

i.          如果列表的大小已经指定,大部分情况下是储存和遍历他们

ii.          对于遍历基本数据类型,尽管Collections使用自动装箱来减轻编码任务,在指定大小的基本类型的列表上ArrayList的工作也会变得很慢

iii.          如果你需要使用多维数组,使用[ ][ ]比List<List<>>更简单

2、 ArrayList和Vector的区别

1)      Vector是线程同步的,所有它也是线程安全的,而ArrayList是线程异步的,是不安全的。如果不考虑到线程的安全因数,一般用ArrayList效率比较高。

2)      如果集合中的元素数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而ArrayList增长率为目前数组长度的50%。在数据量变化比较大的情况下,用vector有一定优势

3、 ArrayList和LinkedList的区别

a)      ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表的数据结构

b)      对于随机访问get和set,ArryList要优于LinkedList,因为LinkedList要移动指针

c)      对于新增和删除操作add和remove,linkedList比较占优势,因为ArrayList要移动数据。这一点要看实际情况,如果只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但批量随机插入,则考虑LinkedList。因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。

4、 Lsit、set和map的区别

a)      List (实现了collection接口)

i.          可以允许有重复的对象

ii.          可以插入多个null元素

iii.          是一个有序容器,保持了每个元素的插入顺序

b)      Set(实现了collection接口)

i.          不允许重复对象

ii.          无序的容器,无法保证每个元素的储存顺序;而TreeSet可以通过Comparator或Comparable进行顺序排序

iii.          只允许一个null元素

iv.          LinkedHashSet按照元素的插入顺序对它们进行存储

c)      Map(不是collection的子接口或实现类。Map是一个接口)

i.          Map是以键值对的存储方式存放数据,key是唯一的,value可以重复

ii.          Map中可以有多个null值,但只能有一个null键

iii.          TreeMap也可以通过comparator或者comparable维护排序顺序

5、 HashMap和HashTable的区别

a)      Hashtable是线程安全的,同步的;而hashMap是线程不安全不同步的

b)      HashMap允许存在一个null的key,多个null的value;而hashtable的key和value都不允许为null

6、 HashMap和TreeMap的区别

a)      HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果,你就应该使用TreeMap(HashMap中元素排列是无序的)

b)      在Map中插入、删除和定位元素,HashMap的最好的选择,但如果您需要按自然顺序或自定义顺序遍历Map,那么就使用TreeMap。使用HashMap要求作为key的类中明确重写了hashCode()和equals()方法。

(两个map中的元素一样,但顺序不一样,会导致hashCode()不一样:

测试:

在hashMap中,同样的值的map,顺序不同,equals时为false;

在treeMap中,同样的值的map,顺序不同,equals时为true,说明treeMap在equals()时是整理了顺序的。

7、 Set里的元素是不能重复,那么用什么方法来区分重复与否呢?是用==还是用equals()?

a)      Set里的元素是不能重复的,用equals()方法来区分重复与否;

b)      ==:

i.          判断基本类型时,比较的是 值 是否相同

ii.          引用类型时,比较的是地址是否相同

c)      Equals:

i.          只能判断引用类型,默认情况下比较的是地址,可以进行重写,比较的是:对象的成员变量值是否相同

8、 Collection和Collections的区别:

a)      Java..util.Collection是一个接口(集合顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在java类库中有很多集合的实现,其直接继承collection接口有List和Set

b)      Collections则是集合类的一个工具类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索及线程安全等操作。

9、 说出ArrayList、linkedList的存储性能和特性

a)      ArrayList采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,优点是索引读取快,从最后插入和删除元素速度快,但是头部插入和删除速度慢

b)      LinkedList使用双向循环链表方式存储数据,所以头尾插入或读取的速度快,而中部插入速度慢

10、         Enumeration和iterator接口的区别

a)      Enumeration接口作用与iterator接口相似,但只提供了遍历vector和hashTable类型集合元素的功能,不支持元素的移除操作

b)      Enumeration速度是iterator的2倍,同时占用更少的内存。但是,iterator远比enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。同时,iterator允许调用者删除底层集合里面的元素。

11、         Listiterator有什么特点,与iterator区别

a)      Iterator是ListIterator的父类接口

b)      Iterator是单列集合(Collection)公共取出容器中元素的方式,而ListIterator是List集合的特有取出元素方式

c)      Iterator中具备的功能只有hashNext(),next(),remove();Listiterator中具备着对被遍历的元素进行增删查改的方法,可以对元素进行逆向遍历。

12、         Java中HashMap的key值要是为类对象,则该类需要满足什么条件?

a)      需要重写equals()和hashCode()方法

13、         ArrayList集合加入1万条数据,应该怎么提高效率?

a)      直接初始化ArrayList集合的初始化容量为1万。但达到100万以上乃至1000万以上时,初始化容量方法效率会下降

java集合常见面试题的更多相关文章

  1. java 集合 + 常见面试题

    1.1. 集合概述 1.1.1. Java 集合概览 从下图可以看出,在 Java 中除了以 Map 结尾的类之外, 其他类都实现了 Collection 接口. 并且,以 Map 结尾的类都实现了 ...

  2. Java集合常见面试题集锦

    1.介绍Collection框架的结构 集合是Java中的一个非常重要的一个知识点,主要分为List.Set.Map.Queue三大数据结构.它们在Java中的结构关系如下: Collection接口 ...

  3. java基础常见面试题,这是一篇超长的随笔!!!

    1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...

  4. 40道Java基础常见面试题及详细答案

    最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 八种基 ...

  5. Java泛型常见面试题

    怀着崇拜的心情读完这篇文章,却发现作者不是原创,而不标注转载~所以转载地址不详~ 1. Java中的泛型是什么 ? 使用泛型的好处是什么? 这是在各种Java泛型面试中,一开场你就会被问到的问题中的一 ...

  6. Java String常见面试题汇总

    String类型的面试题   1.       String是最基本的数据类型吗? 基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个. ...

  7. Integer与String的知试点(java中常见面试题)

    1.==符号使用 Integer a = 1000,b=1000; Integer c = 100,d=100; System.out.println(a==b); System.out.printl ...

  8. Java——多线程常见面试题

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  9. Java线程常见面试题

    v 多线程实现手段: (1).继承Thread类 (2)实现Runable接口 (3)使用线程池 v 线程控制在那个包:java.util.concurrent. (1)提供了线程的运行.(2)线程池 ...

随机推荐

  1. 你不知道的JavaScript--Item17 循环与prototype最后的几点小tips

    1.优先使用数组而不是Object类型来表示有顺序的集合 ECMAScript标准并没有规定对JavaScript的Object类型中的属性的存储顺序. 但是在使用for..in循环对Object中的 ...

  2. 双层嵌套json字符串(即json对象内嵌json数组)解析为Map

    之前我层写过一篇文章,介绍了json与map的相互转化,但当时只涉及到单一的json对象或json数组,对json对象内嵌套这json数组的json字符串无法处理,这篇文章主要解决这个问题. 之前的那 ...

  3. 译MassTransit 生产消息

    生产消息 应用程序或服务可以使用两种不同的方法生产消息.可以使用Sead发送消息,也可以使用Publish发布消息.每个方法的行为是非常不同的,但是通过查看每个特定方法所涉及的消息类型,可以很容易理解 ...

  4. Python ymal 模块和configparser

    ymal : 是一种config文件 # !/user/bin/python # -*- coding: utf-8 -*- import configparser # 生成一个config文件 (当 ...

  5. java 中 “==” 和 equals 的区别

    转自https://www.cnblogs.com/www123----/p/7857298.html 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new Strin ...

  6. css:id选择器的权重>class选择器的权重=属性选择器的权重>元素选择器

    最近的项目要自己写前端了,重新学习下前端的一下基本知识. 一般在css样式表中,上面的会被下面的覆盖,如下图,文字会显示蓝色: 所以按照正常的来说,下面的css样式,测试的文字应该还是蓝色 但结果,测 ...

  7. Hadoop2.41的HA的配置与启动

    我配置HA机制创建了7台虚拟机 1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为云主机.阿里云主机等) ...

  8. TensorFlow之CNN:运用Batch Norm、Dropout和早停优化卷积神经网络

    学卷积神经网络的理论的时候,我觉得自己看懂了,可是到了用代码来搭建一个卷积神经网络时,我发现自己有太多模糊的地方.这次还是基于MINIST数据集搭建一个卷积神经网络,首先给出一个基本的模型,然后再用B ...

  9. 干货,一文带你超详细了解 Filter 的原理及应用

    提出问题 1.我们在访问后台很多页面时都需要登录,只有登录的用户才能查看这些页面,我们需要   在每次请求的时候都检查用户是否登陆,这样做很麻烦,有没有一种方法可以在我们请求之   前就帮我们做这些事 ...

  10. SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式

    Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...