JAVA常见笔试面试总结(三)(集合)

1.map与collection之间得关系
map和collection都是容器,剩下没有一点关系
2.collection中list和set区别
list:有序,可以重复
set:无序,不可以重复
3.list的主要实现类
ArrayList:主要实现类,底层其实就是数组,查找比较快
LinkedList:相比较ArrayList,查找比较慢,但是插入和删除比较块,底层是链表
Vector:一般来说不用,因为效率太低,但是线程安全
4.set的主要实现类
HashSet:主要实现类,查找比较慢,但是插入和删除比较快(HashSet的内部其实是HashMap)
LinkedHashSet:打印出来的数据是“有序”的,因为底层是链表,查找比较快
TreeSet:可以按照指定的排序方法进行排序,TreeSet中放置的数据必须是同一个类的(用二叉树排序)
5.map的主要实现类
HashMap,LinkedHashMap,TreeMap(用二叉树排序),HashTable
Map和Set的子类基本一致
6.map中HashTable与HashMap的区别
一.HashTable是线程安全的,HashMap线程不安全
二.HashMap中允许key,value为null,HashTable不允许
三.单线程情况下,HashMap更快,因为不存在同步锁
四.HashMap也可以通过Collections进行同步
7.解释一下set的无序,不可重复
无序:存储时是无序的
不可重复:要想实现不可重复,要求set中存放的类必须重写equals()和hashCode()方法,在比较时会先比较hashCode()是否相同,如果相同再比较equlas(),如果都相同,那就是同一个对象,不能存进set(此处先比较hashCode()再比较equals()是为啦提高效率)
8.描述一下TreeSet中得两种排序
自然排序:类实现Comparable接口,重写compareTo()方法
定制排序:当填入TreeSet中的类不方便实现Comparable接口时,可以创建一个类实现comparator接口,重写compare()方法,在创建TreeSet接口时,把该类放进去
9.Collection 和 Collections 有什么区别?
Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如 List、Set 等
Collections 是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,比如提供的排序方法: Collections. sort(list)
10.如何决定使用 HashMap 还是 TreeMap?
对于在 Map 中插入、删除、定位一个元素这类操作,HashMap 是最好的选择,因为相对而言 HashMap 的插入会更快,但如果你要对一个 key 集合进行有序的遍历,那 TreeMap 是更好的选择。
11.说一下 HashMap 的实现原理?
HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value 保存在 bucket 里。当计算出的 hash 值相同时,我们称之为 hash 冲突,HashMap 的做法是用链表和红黑树存储相同 hash 值的 value。当 hash 冲突的个数比较少时,使用链表否则使用红黑树。(HashSet是基于HashMap实现的)
12.在 Queue 中 poll()和 remove()有什么区别?
相同点:都是返回第一个元素,并在队列中删除返回的对象。
不同点:如果没有元素 poll()会返回 null,而 remove()会直接抛出 NoSuchElementException 异常。
13.Iterator 和 ListIterator 有什么区别?
一.terator 可以遍历 Set 和 List 集合,而 ListIterator 只能遍历 List。
二.Iterator 只能单向遍历,而 ListIterator 可以双向遍历(向前/后遍历)。
三.ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值