1. 栈和队列 LinkedList
使用push
插入元素时【栈】,头部元素peek
为栈顶元素
使用addLast
插入元素时,头部元素peek
为队首元素
通常创建一个对象专精一个数据结构,不要串用
1.1 栈常用方法
1.2 队列常用方法
Queue:poll、offer、element、peek_queue_poll
Java 中 List 和 ArrayList 的区别 (加入了个人见解)
1.3 通用方法
2. 链表 ArrayList
Java 中 List 和 ArrayList 的区别及使用
3. 集合 Set
TreeSet
相较于HashSet
多了排序功能【排序通过重写Comparator
的方法实现】,因此用TreeSet
就行
4. 映射 Map
理由同Set
,只讲TreeMap
,可根据关键字排序
LinkedHashMap
会保证遍历时按照插入顺序【默认】或者访问顺序取出
首元素可用map.entrySet().iterator().next().getKey()
得到
遍历方式
5. 大 / 小根堆 PriorityQueue
API:PriorityQueue (Java SE 11 & JDK 11 )
Java PriorityQueue(优先队列)_priorityqueue函数java-CSDN博客
因为其本质是根堆而不是队列,因此遍历输出得到的元素无序,依次弹出根顶元素才有序
大小根堆选择
6. 字符串
String
用来处理最终结果,StringBuilder
用来拼接
6.1 String
6.2 StringBuilder
相较于String
来说,处理速度更快,所以处理字符串的时候一般使用StringBuilder
,最后再通过toString()
方法转为字符串
7. 工具类
Arrays
Collections
Integer
8. 日期 Calendar
通过设置对象内部字段再通过get
方法获得数值
9. 数学工具 Math
10. 大数类
BigDecimal
在乘除时可以指定结果舍入方式
11. 输入输出
Scanner
类较为常用,此处不赘述
BufferedReader
BufferedWriter
12. 常用封装算法
12.1 质数判断
大于等于5
的_质数_一定和6
的_倍数_相邻,1 不是质数
12.2 最大公因数 / 最小公倍数
12.3 快速幂
12.4 快速幂求模
详细原理可看快速幂取模
进阶查看:
一篇搞定位运算——java 位运算详解