java容器类总结(更新中。。)

xiaoxiao2021-02-28  67

基本概念

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接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引。
转载请注明原文地址: https://www.6miu.com/read-39041.html

最新回复(0)