前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试必备之Java知识(三)—— 集合、Map相关

测试必备之Java知识(三)—— 集合、Map相关

作者头像
小菠萝测试笔记
发布2020-06-09 14:34:28
3240
发布2020-06-09 14:34:28
举报
文章被收录于专栏:自动化、性能测试

集合相关

List、Set、Map的区别

类型

描述

List

允许重复对象,可插入多个null元素,有序

Set

不允许重复对象,只允许一个null元素,无序

Map

不是collection的子接口或实现类,是一个接口,每个元素都是entry,一个键一个值

Vector、ArrayList、LinkedList的区别

类型

描述

Vector

动态数组,安全,扩容提高1倍

ArrayList

动态数组,不安全,扩容增加50%,初始容量10

LinkedList

双向链表,不安全,不需要调整容易

Vector:动态数组,安全,扩容提高1倍

ArrayList:动态数组,不安全,扩容增加50%,初始容量10

LinkedList:双向链表,不安全,不需要调整容易

TreeSet为什么有序

实现了SortedSet接口,还是通过 Comparator 或者 Comparable 维护了一个排序顺序

HashMap方面

HashMap的内部数据结构

底层使用哈希表(链表( O(n) )+数组),若链表长度过长会转成红黑树实现(O(logn))

HashMap小知识点

知识点

答案

HashMap初始容量

16

HashMap扩容增量

原容量的1倍(2的平方)

HashMap调整容量大小的值

需要调整容量大小的指定值=当前容量*负载因子

HashMap如何保证随机性

通过key的hashCode值,调用hash函数

HashMap的容量为什么是2的倍数

因为hash算法的原因,为了最大随机性,让key的hashcode去决定索引值

HashMap的容量为什么是2的倍数

hash算法的原因,为了最大随机性,让key的hashcode去决定索引值

HashCode的作用

确定对象在哈希表的索引位置

什么是Hash碰撞?

当不同key通过hash算法定位键值对存储位置时,两个key会定位到相同位置

如何解决Hash碰撞?

链地址(拉链法)法(即链表形式)

HashMap为什么线程不安全

Hashmap没有实现锁的机制,1.5之后提供了ConcurrentHashMap高效的线程安全类

HashMap线程不安全的表现

会出现更新丢失,存储了B put的值,但是丢失了A put的值

HashTable、HashMap、TreeMap、LinkedHashMap的区别

类型

底层数据结构

是否同步

others

HashTable

哈希表

Yep

不支持null键和null值,无序

HashMap

哈希表

Yep

支持null键和null值,无序

TreeMap

红黑树

No

通过Comparator或实现Comparable接口对键的顺序关系决定有序

LinkedHashMap

双向链表

No

遍历顺序决定有序

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合相关
    • List、Set、Map的区别
      • Vector、ArrayList、LinkedList的区别
        • TreeSet为什么有序
        • HashMap方面
          • HashMap的内部数据结构
            • HashMap小知识点
              • HashTable、HashMap、TreeMap、LinkedHashMap的区别
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档