集合相关

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相关的更多相关文章

  1. 测试必备之Java知识(二)—— Java高级的东西

    Java高级 类加载过程 加载(创建class对象) -> 连接(验证-准备-解析) -> 类初始化 类加载器类别 根类加载器:加载java核心类 扩展类加载器:加载JRE目录中的jar包 ...

  2. 测试必备之Java知识(四)—— 线程相关

    线程相关 Java多线程实现方式 继承Thread,实现Runnable接口,实现Callable接口(能抛异常且有返回值,不常用) 为什么有了继承Thread方式还要有Runnable接口方式 实现 ...

  3. 测试必备之Java知识(一)—— Java基础

    Java基础 Java如何运行的? 开发的java源代码,通过javac编译成为平台无关的字节码文件(class),然后通过JVM的解释器将字节码解释成对应的机器码 “一次编译,到处运行”的理解 说的 ...

  4. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  5. Java入门(三)——集合概讲

    集合(或者叫容器)是Java的核心知识点,它有着很深的深度.我们这里不会设计多深,仅仅作为了解入门,深入了解请移步各种集合源码文章.好的,下面正是开始介绍... Java集合为何而生 我们知道,Jav ...

  6. Java中的集合Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap(五)

    Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的ke ...

  7. 双列集合Map相关面试题

    一.了解Map集合吗?Map集合都有哪些实现 HashMap HashTable LinkedHashMap TreeMap ConcurrentHashMap 二.HashMap和HashTable ...

  8. Java——Math,Set,List,map相关练习

    声明一个Set集合,只能保存Double类型的数据, 保存10个随机100以内的数, 找出最大值和最小值,打印输出. public static void main(String[] args) { ...

  9. Java知识回顾 (1) 编译环境与基本变量类型

    参考资料 runoob Java知识回顾序列的相关资料,主要来自 runoob,并对其中的知识进行概况或总结,去除对一个之前了解过Java的人员无关的知识点.以便能够使得一个新手,或之前有Java经验 ...

随机推荐

  1. java 泛型的上限与下限

    设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类: 声明对象:类名<? extends 类> 对象名 定义类:类名<泛型标签 extends 类>{ ...

  2. linux进程延迟

    #include <linux/wait.h> long wait_event_interruptible_timeout(wait_queue_head_t *q, condition, ...

  3. linux 处理器特定的寄存器

    如果你需要测量非常短时间间隔, 或者你需要非常高精度, 你可以借助平台依赖的资源, 一个要精度不要移植性的选择. 在现代处理器中, 对于经验性能数字的迫切需求被大部分 CPU 设计中内在的指令定时不 ...

  4. @RequestBody、@ResponseBody注解是如何将输入输出转换成json的

    @RequestBody.@ResponseBody注解,可以直接将输入解析成Json.将输出解析成Json,但HTTP 请求和响应是基于文本的,意味着浏览器和服务器通过交换原始文本进行通信,而这里其 ...

  5. Executor线程池的最佳线程数量计算

    如果是IO密集型应用,则线程池大小设置为2N+1: 如果是CPU密集型应用,则线程池大小设置为N+1: N代表CPU的核数. 假设我的服务器是4核的,且一般进行大数据运算,cpu消耗较大,那么线程池数 ...

  6. 2019-4-29-C#-从-short-转-byte-方法

    title author date CreateTime categories C# 从 short 转 byte 方法 lindexi 2019-4-29 12:8:39 +0800 2019-01 ...

  7. SVG基础绘图实例

    SVG可缩放矢量图(Scalable Vector Graphics),是使用 XML 来描述二维图形和绘图程序的语言,图像在放大或改变尺寸的情况下其图形质量不会有所损失,是万维网联盟的标准. 下面整 ...

  8. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  9. Nmap基本使用

    Nmap ​ Network Mapper ​ 一款开源免费的网络发现和安全审计工具. 用途 ​ 列举网络主机清单 ​ 监控主机或服务运行状况 ​ 管理服务升级调度 ​ 检测目标主机是否在线 ​ 检测 ...

  10. 9.python入门

    借鉴:https://www.cnblogs.com/wupeiqi/articles/5433925.html 一.HelloWorld print("HelloWorld") ...