java基础面试题之容器

九.容器

9.1 Java Collections框架是什么

  • 有两大基础接口Collection和Map,他们的作用只是维护一组对象的基础接口而已,其中List,Queue,Set,Stack,都继承Collection
    • Set特点:无序不可重复
    • LIst特点:有序可重复
    • Map特点:存放映射关系的结构,key不可重复,value可重复

9.2 什么是迭代器

  • 迭代器是一种用来遍历容器的对象,通过迭代器使得开发人员不用了解容器的底层结构,就可以实现对容器的遍历。
  • 常用方法:next,hasNext,remove
  • 使用迭代器遍历容器时可能会存在线程安全问题,解决方法可以使用线程安全的容器替换掉线程不安全的容器,也可以将使用迭代器对容器操作的代码放到synchronized代码块中。

9.3 ArrayList、 Vector和LinkedList有什么区别

  • ArrayList、 Vector底层用数组实现,擅长随机访问,当需要大量随机查询时考虑使用,两者区别在于,前者是线程不安全的,后者是线程安全的,当然相对的前者性能更强
  • LinkedList底层用的是双向链表,擅长插入删除,当需要大量插入删除时考虑使用,LinkedList属于线程不安全的。

9.4 HashMap、 HashTable、 TreeMap和WeakHashMap有哪些区别

  • Map接口有三个实现类:HashMap、 HashTable、 TreeMap,用来存放键值对的数据结构
  • HashMap、 HashTable两者的区别
    • 前者是线程不安全的,后者是线程安全的。
    • 前者允许key为空(但最多只能有一条记录的key为空),后者不允许
    • 其他暂不做了解

9.5 用自定义作为HashMap或HashTable的key需要注意哪些问题

  • HashMap的key是否重复的判断是先使用hashCode()判断对象的哈希值是否相同,若相同再调用所有具有相同哈希值的对象的equals方法判断对象是否相同。
  • 两个不同对象可能拥有相同的哈希值,这种现象称为哈希碰撞,HashMap解决哈希碰撞的方法是使用链地址法。
  • 使用自定义类作为key值的话,若重写了equals方法,则一定要重写hashCode方法。

9.6 Collection和Collections有什么区别

  • 前者是一个总接口,后者属于工具类,不可实例化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值