测试必备之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经验 ...
随机推荐
- web.xml和@WebServlet
web.xml <servlet> <servlet-name>DZDYServlet</servlet-name> <servlet-class>包名 ...
- H3C RIP基本配置举例
- java 内存操作流
操作内存流的时候(从读取出来,注意一定要把真正的数据用toByteArray或者toCharArray将数据读出来) 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操 ...
- P1089 过独木桥
题目描述 今年的 CSP-J/S 比赛马上就要开始了,代码决定的 N 位女学生排队去参加比赛. 期间他们遇到了代码决定的 M 位男生组成的男生队伍. 他们堵在了一座独木桥前.但是独木桥每次只能过一个人 ...
- springboot 配置文件中属性变量引用方式@@解析
这种属性应用方式是field_name=@field_value@. 两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用. @@ ...
- 为什么阿里代码规约要求避免使用 Apache BeanUtils 进行属性复制
缘起 有一次开发过程中,刚好看到小伙伴在调用 set 方法,将数据库中查询出来的 Po 对象的属性拷贝到 Vo 对象中,类似这样: 可以看出,Po 和 Vo 两个类的字段绝大部分是一样的,我们一个个地 ...
- C# Thread.Join();Thread.Abort();
Join() 等待当前线程运行完成后,才继续执行主线程后续代码: Abort() 结束当前线程,继续执行主线程后续代码: Thread.Join(); static void Main(string[ ...
- Sending Packets LightOJ - 1321 (期望计算)
题面: Alice and Bob are trying to communicate through the internet. Just assume that there are N route ...
- 魅族--魅蓝metal
评论:金属潮流平民化
- vue实现拖拽组件
可以拖拽,靠边停靠,效果图如下 代码如下: 注意:代码中使用的图片未上传 DragAndDrop组件: <template> <div class="drag" ...