测试必备之Java知识(三)—— 集合、Map相关
集合相关
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 | 遍历顺序决定有序 |
测试必备之Java知识(三)—— 集合、Map相关的更多相关文章
- 测试必备之Java知识(二)—— Java高级的东西
Java高级 类加载过程 加载(创建class对象) -> 连接(验证-准备-解析) -> 类初始化 类加载器类别 根类加载器:加载java核心类 扩展类加载器:加载JRE目录中的jar包 ...
- 测试必备之Java知识(四)—— 线程相关
线程相关 Java多线程实现方式 继承Thread,实现Runnable接口,实现Callable接口(能抛异常且有返回值,不常用) 为什么有了继承Thread方式还要有Runnable接口方式 实现 ...
- 测试必备之Java知识(一)—— Java基础
Java基础 Java如何运行的? 开发的java源代码,通过javac编译成为平台无关的字节码文件(class),然后通过JVM的解释器将字节码解释成对应的机器码 “一次编译,到处运行”的理解 说的 ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- Java入门(三)——集合概讲
集合(或者叫容器)是Java的核心知识点,它有着很深的深度.我们这里不会设计多深,仅仅作为了解入门,深入了解请移步各种集合源码文章.好的,下面正是开始介绍... Java集合为何而生 我们知道,Jav ...
- Java中的集合Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap(五)
Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的ke ...
- 双列集合Map相关面试题
一.了解Map集合吗?Map集合都有哪些实现 HashMap HashTable LinkedHashMap TreeMap ConcurrentHashMap 二.HashMap和HashTable ...
- Java——Math,Set,List,map相关练习
声明一个Set集合,只能保存Double类型的数据, 保存10个随机100以内的数, 找出最大值和最小值,打印输出. public static void main(String[] args) { ...
- Java知识回顾 (1) 编译环境与基本变量类型
参考资料 runoob Java知识回顾序列的相关资料,主要来自 runoob,并对其中的知识进行概况或总结,去除对一个之前了解过Java的人员无关的知识点.以便能够使得一个新手,或之前有Java经验 ...
随机推荐
- 降智严重——nowcoder练习赛46&&codeforces #561 Div2
两场比赛降智不停,熬夜爆肝更掉rating nowcoder: https://ac.nowcoder.com/acm/contest/894#question T1:水题 T2:考虑a和b的子区间! ...
- 【39.68%】【CF 714 C】Filya and Homework
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- HDU4609 FFT+组合计数
HDU4609 FFT+组合计数 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意: 找出n根木棍中取出三根木棍可以组成三角形的概率 题解: ...
- com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient
启动报错:com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient 解决方案: 添加web主件 ...
- boostrap-非常好用但是容易让人忽略的地方【1】:modal
使用bootstrap框架好久了,在开发中也用到了或者遇到了很多的问题,所以跟大家分享一下 bootstrap modal 组件的样式 .modal-lg .modal-sm 说明:这个是bootst ...
- win10 配置g++环境
一.配置g++编译器的环境 1.将g++编译器的位置添加到环境变量path中,安装了C++ IDE的可以在IDE的安装目录下寻找 例如:C:\MySoftware\dev\Dev-Cpp\MinGW6 ...
- WWDC2018 之 优化 App Assets Optimizing App Assets
该篇博客记录了观看WWDC Session227<Optimizing App Assets>的内容以及一些理解. 引言 该session主要讲述了使用Assets Catalog的新特性 ...
- Struts||IQ
Here's question about struts2....... 1.struts2原理 初始的请求通过一条标准的过滤器链,到达 servlet 容器 ( 比如 tomcat 容器,WebSp ...
- kotlin + springboot整合mybatis操作mysql数据库及单元测试
项目mybatis操作数据库参考: http://how2j.cn/k/springboot/springboot-mybatis/1649.html?p=78908 junit对controller ...
- 啊哈!C语言课后参考答案上
最近看到一本好评量很高的的C语言入门书,课本真的很好,入门的话.专业性没有那么强,但入门足够了!!好评!看着看着就想把这本书的题课后习题都写出来,最后就有了这个小结.可能有的不是最好,不那么专业,但主 ...