集合面试题

  • 格式:docx
  • 大小:19.24 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

###1.请讲下Java里面的容器

分两大类,Map和Collection。而Collection又有子接口List

(数据存储顺序和插入顺序是一样的)、Set(里面的元素具有唯一性) Map是存储键值对的,里面的健不可以重复,但值可以重复

List主要有ArrayList和LinkedList两种实现。实现的数据结构不同,

所以主要的区别也都是和数据结构相关的。ArrayList基于数组,随机访问快,

而对于中间元素的插入删除效率比较低,而且需要考虑扩容问题。

LinkedList,则基于链表,和ArrayList提到的正相反,随机访问慢,

但对于中间元素的插入和删除更有效率。

Set也是一种Collection,和List比起来主要体现在元素唯一性。

###2.请说下Iterator的作用

迭代器可以实现Collection接口的方法,可以一个一个地获取集合中的元素特性:在遍历集合时可判断是否有下一个元素

###3.说下ArrayList和LinkedList的区别和联系,并说明什么情况下用它们

区别:ArrayList用于对象的随机访问速度快,没有顺序

LinkedList实现机制是链表式的,和顺序有关,速度比ArrayList慢

--->联系:ArrayList和LinkedList都是List接口的实现类

当要快速获取一个值时,用ArrayList,用于顺序插入操作时,用LinkedList.

###4.说下List,Set,Map三种集合各有什么特征

List集合中的元素可以重复,

Set集合中的元素不可以重复

Map集合用键-值映射存放对象,Map容器中的键对象不能重复,值对象可以重复

###5.HashSet和TreeSet有什么区别,什么时候用它们

区别:HashSet中的元素不能重复,没有顺序

TreeSet中的元素不能重复,但有顺序

当集合中的元素需要排序时,用TreeSet

一般情况下用HashSet,因为不需要排序,速度比TreeSet快

###6.什么是泛型,怎么使用的,有什么好处?

答案

泛型又分为:方法泛型和类泛型。

定义一个集合时,可以知道里面定义的是什么类型

使用:在集合类型后面加< 数据类型>

使用泛型后,从集合中取得元素后就不用再用强转

###7.什么是for each循环,它可以循环那些数据类型

答案

通过对象拿到集合里的值

可以用来循环集合和数组

###8.写一个for each循环看看

for(Object object : list){

System.out.println(object);

}

###9. 什么是强转怎么写的,有什么优缺点,一般要多用还是少用,为什么?

一般在继承的基础上用.

Person person=new Student();

Student student=(Student)person;

把运行期的强转为编译期的.

编译期不会出错.运行期容易出错.所以一般少用

###10.HashMap和Hashtable有什么区别,一般情况下常用那个?

HashMap的键-值都可以为空(null)

Hashtable的键-值都不可以为空(null),线程安全,

一般情况下用HashMap

###11.Hashtable名字为什么没有驼峰命名

Hashtable的由来比较古老,当时还没有命名规范

###12.Collections和Collection有什么区别

Collections是一个工具类,可以直接调用List和Set的方法

Collection是一个接口,是List和Set集合的父接口

###13.写出Collections的6个方法,并详细解释

sort():对集合进行排序

shuffle():打乱集合中的元素顺序

addAll():将一个集合添加到另一个集合中

max():判断集合中的最大值

min():判断集合中的最小值

copy():将一个集合中的元素复制到另一个集合中去

fill():将一个集合中的元素全部替换成指定的元素

###14.Arrays类是做什么的,写出它的常用6个方法

Arrays是数组的一个工具类

sort():对数组进行排序

binarySearch():搜索数组指定元素的下标

copyOf():复制数组中指定长度的元素

deepEquals():比较两个数组的深度

fill():把数组中的所有元素替换成指定元素

equals():比较指定两个数组的元素是否相等

hashcode():将指定数组的指定范围复制到一个新数组。

###15.比较下集合和数组的优缺点

集合是多个对象的容器,可以将不同数据类型的多个对象组织在一起

数组类型是有相同数据类型的数据集合,数组是很多语言都支持的底层数据结构,性能上是最高的

###16.如何对一个对象排序,有几种方法

把对象放入List集合中,用Collections工具类调用sort()方法进行排序,

但是这个类必须实现Compareble接口才行

把对象放在Set集合中,用TreeSet()实现类对集合直接排序

###17.在集合里面怎么判断两个对象相等,要实现什么方法

重写equals方法

###18.怎么样把集合转化成数组,或把数组转化为集合

把集合转为数组,可以用toArray()方法

把数组转为集合时, for each循坏,先把数组中的元素转为String型,再放到集合里

###19.分别写出List,Set,Map里面的5个常用方法

List:

add()新增clear()清除contains()判断是否包含某个元素