每周三道面试题(三)

不骄不躁

1.Vector和ArrayList的区别?

相同之处:

1.它们都是List

2.它们都实现了RandomAccess和Cloneable接口,都支持快速随机访问,能克隆自己。

3.它们都是通过数组实现的,本质上都是动态数组。

4.它们的默认数组容量是10。

5.它们都支持Iterator和listIterator遍历。

不同之处:

1.线程安全性不一样。ArrayList是非线程安全的,而Vector是线程安全的; ArrayList适用于单线程,Vector适用于多线程。

2.对序列化支持不同。ArrayList支持序列化,而Vector不支持。

3.构造方法个数不同。ArrayList有3个构造方法,而Vector有4个构造方法。Vector除类似的3个构造方法之外,另外的一个构造方法可以指定容量增加系数。

4.容量增加方式不同。逐个添加元素时,若ArrayList容量不足时,“新的容量”=“(原始容量x3)/2 + 1”。而Vector的容量增长与“增长系数有关”,若指定了“增长系数”,且“增长系数有效(即,大于0)”;那么,每次容量不足时,“新的容量”=“原始容量+增长系数”。若增长系数无效(即,小于/等于0),则“新的容量”=“原始容量 x 2”。

5.对Enumeration的支持不同。Vector支持通过Enumeration去遍历,而List不支持。

2.Set 和List的区别?

1.List和Set都是继承自Collection接口。

2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) 。

3.List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet。

HashMap和HashSet的区别。

1.HashMap实现了Map接口,HashSet实现了Set接口。

2.HashMap储存键值对,HashSet仅仅存储对象(且无重复对象)。

3.HashMap使用put()方法将元素放入map中,HashSet使用add()方法将元素放入set中。

4.HashMap中使用键对象来计算hashcode值,HashSet使用成员对象来计算hashcode值。对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false。

5.HashMap比较快,因为是使用唯一的键来获取对象;HashSet比HashMap来说更慢。

3.HashMap与HashTable的区别?

1.HashTable的方法是同步的,HashMap未经同步,所以HashMap效率更高。

2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样,HashMap没有contains方法。

4.HashTable使用Enumeration,HashMap使用Iterator。

5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6.哈希值的使用不同,HashTable直接使用对象的hashCode。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,145评论 0 62
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,783评论 0 33
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,681评论 1 114
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,185评论 0 16