Java集合
2022-02-27 12:49:13 25 举报
AI智能生成
Java集合知识点
作者其他创作
大纲/内容
其他
Unicode
它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,(其中包含了 ASCII编码)。
Java编译器默认使用Unicode编码,因此2字节可以表示所有字符。
存储
8大基本类型
int
(4字节)
short
(2字节)
long
(8字节)
byte
(1字节)
float
(4字节)
double
(8字节)
char
(2字节)
boolean
字符串类型
String
String是final的,不可变的,如果是一个可变的字符串,请尝试使用Stringbuilder
StringBuilder
速度快
线程不安全
StringBuffer
线程安全
速度慢
包装类型
Intrger
Double
Float
Long
Boolean
Character
Short
集合类型
继承关系图
Collection
List
ArrayList
1. 底层原理:内部维护了一个Object[] element;
2. 扩容机制:初始化如果不指定大小,则数组的大小为0
当大小为0时,第一次添加,则大小扩容至10
后续,再次扩容,则增加1.5倍的方式增加
3.线程不安全
Vector
1. 底层原理:内部也是维护了一个Object[] element;
2.扩容机制:初始化大小为10,后续扩容默认为2倍。
也可通过构造方法Vector(int initialCapacity, int capacityIncrement)自定义初始化,以及扩容大小
3. 线程安全
Stack
1.底层原理:同Vector
2. pop方法会移除最后一个元素
LinkedList
1.底层原理:双向链表
2.扩容机制:由于是双向链表,所以不存在容量问题,不需要扩容
3.线程不安全
Set
HashSet
1.底层实现:HashMap,key为set元素,value为空的Object对象。
2.可以存放一个null值,但是只能有一个
3.线程不安全
LinkedHashSet
1.底层实现:LinkedHashMap
2.线程不安全
3.保证插入读出顺序一致
TreeSet
底层实现:treeMap
Map
HashMap
LinkedHashMap
1.底层实现:数组+双向链表
双向链表,可以维护元素的次序
底层实现
jdk1.7:数组+链表
jdk1.8:数组+链表+红黑树
当hash表的一条链表长度 > 8 && 数组(hash表)的长度 >= 64
链表会转化为红黑树(树化)
链表会转化为红黑树(树化)
若hash表的一条链表长度 > 8 && 数组(hash表)长度 > 64
数组(hash表)将扩容值原来的两倍
数组(hash表)将扩容值原来的两倍
若当一个红黑树中的节点 <= 6 时 会转回链表。(剪枝)
扩容机制
第一次加载
hash表初始化为16
负载因子默认为 0.75
后续扩容
当增加的节点数 >= 当前的hash表长 * 0.75
(该节点不一定是添加在数组上,也可以是链表上)
就扩容值原来的两倍
当增加的节点数 >= 当前的hash表长 * 0.75
(该节点不一定是添加在数组上,也可以是链表上)
就扩容值原来的两倍
遍历方式
通过遍历keySet获取key的集合,从而获取对应的vlues值
通过迭代器去遍历keySet
通过遍历entrySet获取key或value
通过迭代器去遍历entrySet
通过遍历Values获得所有value的集合
通过迭代器去遍历Vaules
HashTable
底层结构
数组+链表
线程安全
通过synchronized实现
扩容机制
初始化容量为11
后续扩容为2n+1
Properties
hashTable的子类,线程安全
经常读取配置文件等
注意点:key和value 都不能为空
TreeMap
有序集合,通过红黑树实现
key必须实现comparable接口,否则会抛出异常
根据传入的comparable函数式接口,来控制排序的方式。
面试,易错点
申明变量后,需要对变量进行一个显示的初始化,才可以使用。
例如:
int a;
System.out.println(a);
建议
在Java中,变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。
建议不要在其他表达式的内部使用++,这样编写的代码很容易令人带来迷惑的感觉并会产生烦人的bug。
Math:运行效率高
StrictMath:可以保障在不同的平台上运行都得到相同的结果(一个完全可预测的结果)
Map附加知识点
Map&Entry
hashMap&Node
linkedHashMap&Entry
Collection
Vaules
存放着Map所又value的指向
set
keySet
存放着Map中的所有key的指向
entrySet
0 条评论
下一页