java容器

java容器

java容器知识点:
List接口及实现类
Set接口及实现类
Map接口及实现类
Collection接口和Iterator接口
集合工具类Collections

Collection和Collections的区别

​ Collection是集合接口,提供给集合对象一些通用方法(为各集合提供同一接口)

​ Collections是集合的工具类,提供静态方法、排序、搜索和线程安全等工具

List、Set、Map的区别

List 继承Collection,集合元素有序可重复,实现类AbstractList(子类有ArrayList、LinkedList、Vector其中Vector线程安全)

Set 继承Collection,集合元素无序不重复,实现类AbstractSet(子类有HashSet、LinkedHashSet、TreeSet)

Map 集合元素键不能重复,实现类有TreeMap、HashMap、HashTable,其中HashTable线程安全

HashMap和HashTable区别

​ 继承的父类不一样,但实现的接口一样(HashMap继承AbstractMap类,HashTable继承Dictionary类,都实现Map接口)

​ HashMap线程不安全,HashTable线程安全

​ HashMap允许键值为null,而HashTable不允许

​ 遍历方式不同,HashMap用Iterator,HashTable用Enumeration

​ hash值的计算方式不同,解决hash冲突方式不同,扩容方式不同

HashMap和TreeMap区别

​ HashMap基于哈希表实现,TreeMap基于红黑树实现

​ HashMap适用于Map中插入、删除和定位元素

​ TreeMap适用于有序key集合的遍历

HashMap实现原理

​ hashMap基于哈希表实现,并允许键值为空值

当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上

HashSet实现原理

​ HashSet底层是HashMap实现

​ HashSet的值存放在HashMap的键(key)上,HashMap的值(value)是PRESENT

ArrayList和LinkedList区别

​ ArrayList底层是数组,支持随机访问,时间复杂度O(1)

​ LinkedList底层是双向循环链表,不支持随机访问,时间复杂度O(n)

ArrayList和Array区别

​ ArrayList只能存放对象,Array可以存放对象和基本类型

​ ArrayList大小是可变的,Array指定大小后不可变

​ ArrayList有强大的功能(addAll、removeAll和iterator等)

ArrayList和Vector区别

​ ArrayList不是同步的,线程不安全,但是效率高

​ Vector是同步的,线程安全

List和数组的转换

​ List->数组: ArrayList.toArray()方法

​ 数组->List: Arrays.asList()方法

哪些集合类线程安全

​ vector、stack、hashtable、enumeration

Iterator的特点

​ next()方法,获得序列的下一个元素

​ hasNext()方法,判断序列中下一个是否还有元素

​ remove()方法,将迭代器新返回的元素删除

Iterator和ListIterator区别

​ Iterator用来遍历Set和List集合,ListIteator只能遍历List集合

​ Iterator只能前向遍历,ListIterator可以前向遍历和后向遍历

​ ListIterator实现了Iterator接口,并包含其他的功能

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:10
码农索隆:成年人最直白的答复:已读不回
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务