测试必备之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经验 ...
随机推荐
- Yet Another Array Queries Problem CodeForces - 863D (暴力/思维)
You are given an array a of size n, and q queries to it. There are queries of two types: 1 li ri — p ...
- HDU6602 Longest Subarray hdu多校第二场 线段树
HDU6602 Longest Subarray 线段树 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6602 题意: 给你一段区间,让你求最长的区间使 ...
- Netty小结
前言 在实际开发中,netty的开发使用相对较小,why?在企业中涉及网络编程的部分比重较小,在这大环境内,企业会优先使用简单的http,udp等基础的通讯协议工具,如果不能满足需求,会考虑基于rpc ...
- Java 学习笔记(8)——匿名对象与内部类
一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和 ...
- 今天IT告告诉我,我电脑上的java jdk属性收费滴!需卸载
敲着代码,IT突然跑来说,你电脑的Jdk版本属于收费版,目前需要卸载!啊哦...手贱!每次有更新我都更新了,Java要收费老早之前耳闻了,但是俺很少做java,一般都在.Net,所以忽略鸟.. 于是G ...
- Google 开源的 Python 命令行库:深入 fire(一)
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
- eclipse中如何配置maven
1.首先需要在自己电脑中安装Maven,下载maven的路径:http://maven.apache.org/download.cgi 2.我们把下载好的文件解压到自己电脑的任意一个盘符中去,我的是e ...
- appium启动app(ios)
Appium启动APP至少需要7个参数 'platformVersion','deviceName'.'udid'.'bundleId'.'platformName'.'automationNam ...
- WeihanLi.Npoi 1.7.0 更新
WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ColumnOutputF ...
- MyBatis原理-拦截器
一.MyBatis拦截器介绍 MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能. MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用.默认情况下,M ...