栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

每天5道java面试题 -5(集合)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每天5道java面试题 -5(集合)

1.常用的集合类有哪些?

        Map和Collection接口是所有集合框架的父接口

        1)Collection接口的子接口包括Set接口和List接口

        2)Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等

        3)Set接口的主要实现类有:HashSet、TreeSet、linkedHashSet等

        4)List接口的主要实现类有:ArrayList、linkedList、Stack、Vector等

2.怎么确保一个集合不能被修改?

        可以使用Collection.unmodifiableCollection(Collection c)方法来创建一个只读集合,这样改变集合的任何操作都会抛出Java. lang. UnsupportedOperationException 异常。

        示例代码:

List list = new ArrayList<>(); 
list.add("x"); 
Collection clist = Collections.unmodifiableCollection(list); 
clist.add("y"); // 运行时此行报错 
System.out.println(list. size());
3.迭代器Iterator是什么?怎么使用?有什么特点?

        Iterator接口提供遍历任何Collection的接口。我们可以从一个Collection中使用迭代器方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration,迭代器允许调用者在迭代过程中移除元素。

        因为所有的Collection继承了Iterator迭代器

        我们来看一下Collection的源码

 Iterator使用代码如下:
 

List list = new ArrayList<>(); 
Iterator it = list.iterator(); 
while(it.hasNext()){ 
    String obj = it.next(); 
    System.out.println(obj); 
}

        Iterator的特点是只能单向遍历,但是更加安全,因为它可以确保,在当前遍历的集合元素被更改的时候,就会抛出ConcurrentModifificationException 异常。

4.遍历一个List有哪些不同的方式?每种方式的实现原理是什么?Java中List遍历的最佳实践是什么?

遍历方式有以下几种:

        1)for循环遍历:基于计数器。在集合外部维护一个计数器,然后依次读取每一个位置的元素,读取到最后一个元素后停止。

        2)迭代器遍历:Iterator是面向对象的一个设计模式,目的是屏蔽不同数据集合的特点,统一遍历集合的接口。Java在Collections中支持了Iterator模式

        3)foreach循环遍历:foreach内部也是采用了Iterator的方式实现,使用时不需显示声明Iterator或者计数器。优点是代码简洁,不易出错;缺点是只能做简单的遍历,不能在遍历过程中操作数据集合,例如删除、替换

最佳实践:

        Java Collections框架中提供了一个RandomAccess接口,用来标记List实现是否支持Random Access。

        如果一个数据集合实现了该接口,就意味着它支持Random Access,按位置读取元素的平均时间复杂度为O(1),如ArrayList。

        如果没有实现该接口,表示不支持Random Access,如linkedList。

        推荐的做法是,支持Random Access的列表使用for循环遍历,否则建议用Iterator或foreach遍历。

5.数组和集合的区别(什么情况下使用数组什么情况下使用集合)?

        数组可以储存基本数据类型和对象,集合只能储存对象

        数组是固定大小的,集合的大小可以自动扩展

        数组的内置方法没有集合多,比如addAll、removeAll、Iterator等方法只有集合才有

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号