java 容器类 面试_java容器类总结(更新中。。)详解

基本概念

java 容器类库的用途就是‘保存对象’

- Collection。 一个对立元素的序列,这些元素都服从一条或多条规则

- List :按照插入的顺序保存对象

- Set:保存不重复的数据

- Queue:先进先出

- Map。一组成对的‘键值对’对象

List

ArrayList。基于动态数组的数据结构

长处:随机访问元素(get,set方法) 短处:中间插入和移除元素比较慢(add和remove方法)

LinkedList。基于链表的数据结构

长处:中间插入和移除元素速度快(add和remove方法) 短处:随机访问数据(get,set方法

迭代器(扩充)

Java的迭代器(Iterator)只能单向移动(ListIterator可以双向)Iterator用来:

- 使用方法iterator()要求容器返回一个Iterator

- 使用next()方法来获得序列中的下一个元素

- 使用hasNext()来判断序列中是否还有元素

- 使用remove将迭代器元素删除

只是遍历List,而不改变List对象本事,用foreach语法更佳简洁

Set

set不保存重复的数据,set最常被使用就是来测试归属性

- HashSet 数据是无序的

- TreeSet 会对插入的数据进行排序

- LinkedHashSet 保存插入的顺序

Map

Map是一种将对象与对象相关联的设计。HasMap设计用来快速访问,是无序的,TreeMap保持‘健’始终处于排序状态,LinkedHashMap保持插入的顺序。

- hashMap和hashTable的区别

- hashMap和hashTable都是集成于map,功能基本上可以等价

- hashMap是非synchronized,hashTable是synchronized,是线程安全的

- HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行

常见的面试题:

ArrayList和Vector的区别

Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

hashMap和hashTable的区别

见上

集合中键值对null值的允许

List:可以有多个null,可以有重复值

HashSet:能插入一个null(因为内部是以 HashMap实现 ),忽略不插入重复元素。

TreeSet:不能插入null (因为内部是以 TreeMap 实现 ) ,元素不能重复,如果待插入的元素存在,则忽略不插入,对元素进行排序。

HashMap:允许一个null键与多个null值,若重复键,则覆盖以前值。

TreeMap:不允许null键(实际上可以插入一个null键,如果这个Map里只有一个元素是不会报错的,因为一个元素时没有进行排序操作,也就不会报空指针异常,但如果插入第二个时就会立即报错),但允许多个null值,覆盖已有键值。

HashTable:不允许null键与null值(否则运行进报空指针异常)。也会覆盖以重复值。基于线程同步。

Iterator和ListIterator的区别是什么

Iterator可用来遍历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、付费专栏及课程。

余额充值