测试必备之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经验 ...
随机推荐
- springboot中使用spring-session实现共享会话到redis(二)
上篇文章介绍了springboot中集成spring-session实现了将session分布式存到redis中.这篇在深入介绍一些spring-session的细节. 1.session超时: 在t ...
- java 静态导入(1.5特性,好处是不用写类名)
import语句可以导入一个类或某个包中的所有类 import static语句导入一个类中的某个静态方法或所有静态方法 语法举例: import static java.lang.Math.sin; ...
- 服务端CURL请求
服务端与服务端之间,也存在接口编程. 比如我们网站服务端,需要发送短信.发送邮件.查询快递等,都需要调用第三方平台的接口. 1.php中发送请求 ①file_get_contents函数 :传递完整的 ...
- 很多.net 程序员不知道又非常重要的 .net高级调试技巧.调试别人的dll方法内的变量
事情是这样的, 最近需要开发Orcale的数据库. 于是使用了EF 加上 Oracle.ManagedDataAccess.Client 这个Oracle.ManagedDataAccess 很好用, ...
- python 下载bilibili视频
说明: 1.清晰度的选择要登录,暂时还没做,目前下载的视频清晰度都是默认的480P 2.进度条仿linux的,参考了一些博客修改了下,侵删 3.其他评论,弹幕之类的相关爬虫代码放在了https://g ...
- UTF-8、UTF-16、UTF-32编码的相互转换(不使用现成的函数)
最近在考虑写一个可以跨平台的通用字符串类,首先需要搞定的就是编码转换问题. vs默认保存代码文件,使用的是本地code(中文即GBK,日文即Shift-JIS),也可以使用带BOM的UTF-8.gcc ...
- 在windows+nginx的curl操作请求超时的问题
之前的项目在apache下进行本地curl操作的时候请求不会超时 后来要在nginx下开发的时候,我在项目中写一个curl操作的test.php文件,请求相同项目下的一个index.php文件,然后c ...
- Unitils集成DBUnit、Spring-单元测试(转)
1.maven-pom文件中引入相关jar包 <!-- Unitils -dbunit.Spring --> <dependency> <groupId>org.u ...
- Linux 操作虚拟机、数据库
1.打开虚拟机,输入命令:ifconfig 查看iP和端口号,端口号一般为:22 2.打开Xshell(先安装好),连接虚拟机(根据iP和端口号) 若连接成功,Xshell则会显示虚拟机的ip和端口号 ...
- PLsql下载官网下载地址
https://www.allroundautomations.com/registered/plsqldev.html