Java容器面试知识点总结

容器

java容器有哪些?

String,数组以及Java.util 下面的集合类
List:存放有序,列表存储,元素可重复 ArrayList LinkedList Vector
Set:无序,元素不可重复 HashSet TreeSet
Map: 无序,元素可重复 HashMap TreeMap LinkedHashMap HashTable

Collection 和 Collections 有什么区别?

Collection 是集合类的一个顶级接口,它提供了对集合对象进行基本操作的通用接口方法。
Collections 是集合类的一个工具类,它提供了一系列得到静态方法,用于对集合中元素进行排序,搜索以及线程的同步等操作。

List,Set,Map 之间的区别是什么?

List : 可以允许重复的对象;可以插入多个null元素;有序,输入顺序就是输出顺序;
Set: 不允许重复对象;无序,且只允许一个null对象;
Map: 存储键值对,只能有唯一得到key,value 可以重复只能有一个null键

HashMap 和 Hashtable 有什么区别?

一,HashMap 可以接受null 键和值,HashTanble 不行
二,HashTable 是线程安全的,通过synchronized 来保证,而HashMap线程不安全
三,HashMap 的迭代器是fail-fast 迭代器,而HashTable的enumerator迭代器不上fail-fast.

如何决定使用HashMap 还是 TreeMap?

HashMap 基于散列表实现,适用于查询频繁的情况。
TreeMap 基于红黑树实现,适用于创建比较多的情况,且TreeMap 存储数据是按照字母表的顺序存储的,如果对顺序有要求也可以选用TreeMap。

说一下HashMap 的实现原理?

数组+链表,初始16 0.75 扩容,数据存在内部Map.Entry 中,其中包含key value hashcod 和 next.

说一下HashSet的实现原理?

HashSet 基于HashMap 实现,默认构造函数是构造一个初始容量为16的HashMap,所有放入HashSet集合的元素实际上由HashMAp De key来保存,而value 则保存了一个PRESENT 的静态Object对象,因为元素都保存在key中,所以才能不重复。

ArrayList 和 LinkedList的区别是什么?

  1. ArrayList 底层基于动态数组,LinkedList基于链表实现,底层是循环双向链表
  2. 对于随机访问get和set,ArrayList 优于LinkedList.
    3.对于新增add和删除remove, LinkedList比较快。

如何实现数组和List之间的转换?

List 转数组:toArray()方法,在方法参数中指定原集合的长度数组即可,数组转为List用List:Arrays的asList()方法。

ArrayList 和 Vector 的区别是什么?

1.Vector 的 方法都是同步的,是线程安全的,ArrayList则不是。
2. 在进行扩容的时候,Vector扩容至原来的一倍,ArrayList增加至原来的0.5倍。

Array和ArrayList有何区别?

  1. Array(数组)可以包含基本数据类型和对象类型,ArrayList只能包含对象类型
  2. ArrayList 可以自动扩容,Array则不行

在!Queue 中 poll() 和 remove() 有什么区别?

queue 中,add方法和offer方法都可以添加元素,而remove和poll都是删除队列的头元素区别:add方法在队列满的情况下抛出异常,而offer方法则返回false。remove方法在队列为空时抛出异常,poll方法将返回null。

哪些集合类是线程安全的?

Vector HashTable ConcurrentHashMap Stack

迭代器 Iterator 是什么?

Iterator 是个接口,它提供了很多对元素进行迭代的方法。迭代器可以在迭代过程中删除底层集合的元素,可以直接调用Iterator的remover()方法来删除。
因为在Collection 接口中定义了获取集合迭代器的方法,所以每个集合都包含包括看可以返回迭代器实现的方法。

Iterator 怎么使用?有什么特点?

每个集合都可以用iterator() 方法一个Iterator实例,使用next() 方法获取序列中的下一个元素,使用hasNect() 方法检查序列中是否有元素,使用remove() 方法将迭代器新返回的方法删除,特点:Iterator将集合的遍历和底层的结构分离。

Iterator 和 ListIterator 有什么区别?

ListIterator 是 Iterator 的子接口,用于扩展 Iterator.
在 Iterator 中,我们只能向前移动,无法操纵或者修改集合中的元素.ListIterator 弥补了这种缺
点区别:
1.范围不同,Iterator 适用于所有集合,而 ListIterator 只适用于 List 及其子类
2.ListIterator 有 add 方法可以添加元素,Iterator 则不行.
3.ListIterator 可以实现双向遍历,Iterator 则不行.
4.ListIterator 可以实现对象的修改,Iterator 不行
5.ListIterator 可以获取集合中的所有,Iterator 不行.

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

可以使用 Collections 或者 Guava 来快速实现.如 Collections.unmodifiableMap(xxxMap);

希望大家点赞支持一下,小编才有动力继续更新!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二手Java程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值