Java面试题以及答案(转载加自己补充答案)---集合框架

Java面试题三–集合框架

  1. ArrayList和Vector的区别
    答:ArrayList的底层是由数组构建的,所以ArrayList具有的特点就是遍历速度快,也适合随机查找,但是不适合插入和删除。Vector和List一样,也是通过数组实现的,不过Vector支持线程同步,也就是说一个时间只有一个线程可以访问Vector,这样就可以避免多线程而引发的不一致性,但是实现同步也需要一些代价,会牺牲一些效率,所以它就要比ArrayList访问的慢。
    关于ArrayList,LinkesList,Vector详解连接: https://www.cnblogs.com/williamjie/p/11158523.html

  2. HashMap和Hashtable的区别?
    答:这个很详细,建议看一下,链接: https://www.cnblogs.com/williamjie/p/9099141.html
    1.他们继承的父类是不同的,Hashtable继承自Dictionary类,而HashMap继承自AbstracMap类。但二者都实现了Map接口。
    2.它们的线程安全不同,Hashtable是线程安全的,因为它的每个方法中都加入了Synchronize,HashMap是线程不安全的,因为HashMap在哈希冲突的时候采用链表的方式来解决的,这种方式会存在安全隐患。
    3.Hashtable中,key和value都不允许出现null值,HashMap中,null可以作为键,这样的键只有一个,可以多个null值。

  3. List和Map的区别?
    答:1.List和Set是存储单列数据的集合,Map是存储键和值这样的双列数据的集合。2.Linst中存储的数据是有顺序的,并且允许重复;Map中存储的数据是无序的,其键不能重复,但是值可以重复,元素在集合中的位置是由元素的hashcode决定的,位置是固定的。

  4. List,Set,Map是否继承自Collection接口?
    答:List,Set是,Map不是。
    链接:https://blog.csdn.net/htofly/article/details/8622784

  5. List,Map,Set三个接口,存取元素时,各有什么特点?
    答:List表示有先后的顺序集合,存元素采用add()方法,每次加入对象按照先来后到的顺序排序,也可以用add(int index, Object)指定位置存放。在取元素时有两种方法:1.Iterator接口(迭代器)去取所有元素,2. 调用get(index i)来明确说明取第几个。
    Set表示不允许有重复元素,存元素时,采用add()方法,add方法中有一个返回值,使用equals进行对比,如果为ture,则不会加入该元素,取元素的方法采用Iterator取得所有的元素。

  6. 说出ArrayList,Vector,LinkedList的存储性能和特性
    答:ArrayList和Vector都时使用数组方式存储数据,LinkedList采用的是双链表进行数据操作,因为Vectory是线程安全的,所以性能上币会低一些,要比ArrayList低,因为底层实现不同,LinkedList采用链表会在数据的增加删除操作上,效率非常高,但是在遍历数据上,要比底层以数组来写的ArrayList低一些。
    数据存储上,Vectory默认增长是原来的一倍,ArrayList是原来的一半。

  7. Collection和Collections的区别?
    答:Collection是集合类的一个顶级接口,其直接继承接口有List与Set,而Collection则是集合类的一个工具类/帮助类,其中提供了一系列的静态方法,用于对集合中元素进行排序,搜索以及线程安全等各种操作。

  8. 如何让去掉一个Vector集合中重复的元素?
    答:两种方法:1.通过Vector.contains()方法判断是否包含该元素,如果没有包含就添加到新的集合当中,适用于数据较小的情况下。
    2.采用HashSet set = new HashSet(Vector), 因为set集合是不允许有重复元素出现的。

  9. Set里的元素是不能重复的,那么用什么方法区分重复与否呢?是用==还是equals()? 它们有何区别?
    答: Set的Api中写的是equals,所以我认为应该是采用equals()来区分的。= =是判断两者是否是同一对象,equals()是对于对象的使用,根据API可知,set中使用equals进行对比的,只用对比是否引用的相等。

  10. 你知道的集合类都有哪些,主要方法?
    答:集合涉及到的接口有:List,Set,Map。其中涉及到的类有,ArrayList,LinkedList,Vector,Stack,HashMap,HashMap,主要方法有:迭代器方法iterator(),他们各自也有一些添加元素和删除的方法,例如List接口实现类中add()方法。
    链接:https://www.cnblogs.com/guweiwei/p/6638022.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值