2022M6学习笔记

知识点整理

一、Java 集合 6.11

为什么要设计集合

  1. 为了保存数量不确定的数据;
  2. 为了保存具有映射关系的数据;

与数组的区别
数组需要初始化指定长度且长度不可变,集合类可变长;
数组元素可以是基本类型,集合类元素必须是对象;
2022M6学习笔记_第1张图片

Collection

2022M6学习笔记_第2张图片

1. List

  • ArrayList:
    ArrayList是基于数组的,可变长数组,可以通过索引快速访问元素,对尾部元素的增删改查比较友好,但在中间位置插入和删除效率较低,因为一次修改会影响后边所有元素。
    构造器:
    ArrayList():构造一个初始容量为 10 的空列表。
    ArrayList(Collectionc):构造一个包含指定 Collection 元素的列表,这些元素是按照该 Collection 的迭代器返回它们的顺序排列的。
    扩容:
    ArrayList数组扩容时会自动扩容到原来长度的1.5倍,然后将数据依次拷贝到新数组,所以会非常耗费资源。(hashMap两倍扩容)

  • LinkedList
    基于链表实现,可以快速的插入和删除,但不利于随机访问。也可以使用它的方法模拟栈和队列。

  • Vector
    Vector和ArrayList很相似,都是长度可变的数组,但Vector是同步的,线程安全的,适合多线程情况,初始大小默认10,扩容时两倍扩容,也可以在构造器中指定增量。

2. Set

Set集合中不包含重复元素

  • 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

2. Map

2022M6学习笔记_第3张图片
TreeMap 类的使用方法与 HashMap 类相同,唯一不同的是 TreeMap 类可以对键对象进行排序。2022M6学习笔记_第4张图片2022M6学习笔记_第5张图片
遍历: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

JVM 虚拟机 6.13

多线程 6.14

数据结构基础 6.15

  • 红黑树
  • 链表
  • 加粗样式

mysql

连接:https://www.runoob.com/mysql/mysql-join.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

算法

排序 6.15

你可能感兴趣的:(JAVA,笔记整理,数据结构及算法,java)