Java基础知识整理(六)- 集合类笔试题

时间:2023-02-15 10:11:19

整理一下,集合类的相关笔试题。(题目答案,整理来自网络,不一定正确,请注意)


1. 简述ArrayList,Vector, LinkedList的存储性能和特性?

ArrayList 和Vector底层使用数组方式存储数据,增、删慢,查、改快,它们都允许直接按序号索引元素,

ArrayList:线程不安全,速度快

Vector:线程安全,通常性能上较ArrayList差

而LinkedList使用双向链表实现存储,增、删快,查、改慢


另一份答案,大家整合一下:

答:就ArrayList与Vector主要从二方面来说.

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

就HashMap与HashTable主要从三方面来说。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

三.值:只有HashMap可以让你将空值作为一个表的条目的key或value


2. HashMap和HashTable的区别:

HashMap 是Hashtable 的轻量级实现(非线程安全的实现),他们都实现了Map 接口,

主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。

HashMap 允许将null 作为一个entry 的key 或者value,而Hashtable 不允许。

Hashtable 是线程安全的,也就是说是同步的,而HashMap 是线程序不安全的,不是同步的。


3. Collection和Collections的区别

Collection是集合类的上级接口,继承Collection的接口主要是Set和List

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。


4. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别

Set里的元素是不能重复的,使用equals()方法判断。

==一般用来比较基本数据类型是否相等,equals()用来判断两个对象是否相等。

请参考   Java基础知识整理(三)- equals和==的区别 

(注意:关于这道题,网上很多答案都是一样的,要辩证的看一下,请同学们注意。)