知识点整理
一、Java 集合 6.11 为什么要设计集合
- 为了保存数量不确定的数据;
- 为了保存具有映射关系的数据;
数组需要初始化指定长度且长度不可变,集合类可变长;
数组元素可以是基本类型,集合类元素必须是对象;
文章图片
Collection
文章图片
1. List
- ArrayList:
ArrayList是基于数组的,可变长数组,可以通过索引快速访问元素,对尾部元素的增删改查比较友好,但在中间位置插入和删除效率较低,因为一次修改会影响后边所有元素。
构造器:
ArrayList():构造一个初始容量为 10 的空列表。
ArrayList(Collectionc):构造一个包含指定 Collection 元素的列表,这些元素是按照该 Collection 的迭代器返回它们的顺序排列的。
扩容:
ArrayList数组扩容时会自动扩容到原来长度的1.5倍,然后将数据依次拷贝到新数组,所以会非常耗费资源。(hashMap两倍扩容)
- LinkedList
基于链表实现,可以快速的插入和删除,但不利于随机访问。也可以使用它的方法模拟栈和队列。
- Vector
Vector和ArrayList很相似,都是长度可变的数组,但Vector是同步的,线程安全的,适合多线程情况,初始大小默认10,扩容时两倍扩容,也可以在构造器中指定增量。
- HashSet // todo
通过哈希值存储对象,会改变对象原本的顺序,去重。
如果有两个元素通过 equals() 方法比较返回的结果为 true,但它们的 hashCode 不相等,HashSet 将会把它们存储在不同的位置,依然可以添加成功。
也就是说,两个对象的 hashCode 值相等且通过 equals() 方法比较返回结果为 true,则 HashSet 集合认为两个元素相等。
- ConcurrentHashMap //todo
为HashMap在并发写数据的时候容易因为rehash的过程产生环形链表的情况。所以在并发使用Map结构时,一般建议使用ConcurrentHashMap。
https://www.jianshu.com/p/4e03b08dc007
- TreeSet
有序的Set集合,基于红黑树实现
对象必须实现Comparable接口,和其下的compareTo方法
https://wenku.baidu.com/view/e5f947da07a1b0717fd5360cba1aa81144318f68.html
文章图片
TreeMap 类的使用方法与 HashMap 类相同,唯一不同的是 TreeMap 类可以对键对象进行排序。
文章图片
文章图片
遍历:http://c.biancheng.net/view/6872.html
资料参考:
http://c.biancheng.net/view/6824.html
https://blog.csdn.net/ThinkWon/article/details/104588551
设计模式 抽象工厂模式、单例模式、装饰者模式、观察者模式
- 单例模式
优点:减少了频繁创建和销毁造成的资源浪费;避免了资源的多重占用。
饿汉式、懒汉式、双重锁、LazyLoading、枚举
https://www.runoob.com/design-pattern/singleton-pattern.html - 观察者模式
https://www.runoob.com/design-pattern/observer-pattern.html - 装饰者模式 6.12
https://blog.csdn.net/qq_42402854/article/details/111041519 - 工厂模式 6.12
https://www.runoob.com/design-pattern/factory-pattern.html - 抽象工厂模式 6.12
https://www.runoob.com/design-pattern/abstract-factory-pattern.html
- 红黑树
- 树
- 链表
- 加粗样式
正则表达式:https://www.runoob.com/mysql/mysql-regexp.html
事务:https://www.runoob.com/mysql/mysql-transaction.html
事务四个特性:
一致性、原子性、隔离性、持久性
隔离级别:读已提交、读未提交、可重复度、串行化
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
ALTER:https://www.runoob.com/mysql/mysql-alter.html
临时表:https://www.runoob.com/mysql/mysql-temporary-tables.html
redis 6.12 git git init
git add .
git commit -am ‘first commit’
git remote add origin (项目链接)
git pull
git branch
git push -u origin master
git checkout -b v1.0 origin/master
git push origin HEAD -u
maven 跨平台项目管理工具,可以用来创建项目、管理jar包。
通过pom文件配置jar包
Linux https://blog.csdn.net/Dabie_haze/article/details/118969328
算法 【JAVA|2022M6学习笔记】排序 6.15
推荐阅读
- 编程选择|Java结构化数据处理开源库SPL
- 设计模式|(一)设计模式——简单工厂,工厂方法和抽象工厂
- 大数据|Java 结构化数据处理开源库 SPL
- 面试|字节面试官告诉你如何面试研发岗
- java虚拟机|java多线程 线程应用实例
- Java|史上最全Java学习内容
- 面试|2021春招字节面经,4年老程序员经验分享,已拿到offer
- JUC并发编程|JUC并发编程——线程池介绍和底层实现
- 游戏|一个niubility的Vue游戏,真厉害!