当前位置: 首页 > news >正文

Java进阶笔记(中级)

-----接Java进阶笔记(初级)-----

目录
      • 集合
      • 多线程
  • 集合
    • ArrayList
      • 可以通过List来接收ArrayList对象(因为ArrayList实现了List接口)
        方法:接口名 柄名 = new 实现了接口的类();
        PS: List list = new ArrayList();
      • 遍历方法:1.使用迭代器Iterator遍历;2.用for循环遍历;3.用增强型for循环
    • LinkedList
      • 实现了List接口
      • 实现了双向链表结构Deque,可以很方便的在头尾插入删除数据
        addFirst(),removeFirst() //头部插入,删除
        addLast(),removeLast() //尾部插入,删除
      • 实现了Queue接口(先进先出队列 FIFO)
        offer() ----将元素添加到队尾
        poll() ----取出第一个元素
        peek() —获得第一个元素但不取出
    • 二叉树(排序):
      • 选定一个根节点
      • 插入数据,小、相同的放左边,大的放右边
      • 采用中序遍历即: 中间的数遍历后放在中间
    • HashMap
      • HashMap储存数据的方式是—— 键值对
      • 键不能重复,值可以重复
    • HashSet
      • 元素不能重复
      • 没有按照元素的插入顺序排列
      • 不能通过get()方法获取元素,遍历需要用到迭代器或增强for循环
    • Collection接口
      • Collection是 Set,List ,Queue和 Deque的接口
      • Collection是 集合的顶层接口,不能被实例化
    • Collections
      • Collections是一个类,容器的工具类
      • 用于操作集合,如list,set
      • 常用方法:
        • sort() -----(对集合进行排序,默认升序排序)
        • reverse()-----(反转集合中元素)
        • shuffle()----- (混淆集合中数据的顺序)
        • swap(List list,int i,int j)-----(交换集合中i和j下标的数据)
    • HashTable
      • 和Hashtable一样,都实现了Map接口,都用键值对保存数据
      • 区别:
        • HashMap可以存放 null值,Hashtable不能存放null值
        • HashMap不是线程安全的类,Hashtable是线程安全的类
    • 几种Set
      • 参考链接
    • Comparable接口
      • 实现Comparable接口可以强行对实现它的每个类的对象进行整体排序
    • 泛型
      • 把类型当作是参数一样传递
      • 在容器后面添加,Type可以是类,抽象类,接口
      • 泛型类:在类的声明后加上一个
      • 泛型转型
        • 父类泛型不能转型为子类泛型
        • 子类泛型不可以转换为父类泛型
  • 多线程
    • 创建多线程
      • 有3种方式创建多线程:
        • 继承线程类:继承Thread,并且重写run方法
        • 实现Runnable接口:实现Runnable接口,重写run方法,
          借助线程对象的start()方法启动一个新的线程,new Thread(对象名).start()
        • 匿名类:继承Thread,重写run方法,直接在run方法中写业务代码
    • 常用方法:
      • sleep() -----当前线程休眠(暂停)
      • join() -----加入到当前线程中
      • setPriority() -----线程优先级
      • setDaemon() -----守护线程, 当所有的线程都是守护线程时,当前进程结束
    • 同步
      • 使用synchronized关键字实现线程同步:
        • synchronized(同步对象名称){
          //此处的代码只有占有了同步对象后才可以执行
          //在同一时间,只能被一个线程占有
          }
        • 如果一个类,其方法都是有synchronized修饰的,那么该类就叫做线程安全的类
        • 非线程安全的之所以会比线程安全的快,是因为不需要同步,省略了些时间
        • StringBuffer 是线程安全的,StringBuilder 是非线程安全的
          单线程用StringBuilder会更快些,多线程需要用StringBuffer保证数据的安全性
        • 借助Collections.synchronizedList,可以把ArrayList转换为线程安全的List。
    • 死锁
      • 产生条件死锁
      • 解决办法:
        (1)预防死锁,破坏产生死锁的必要条件
        (2)避免死锁,例如银行家算法(Banker Algorithm)。
        (3)定期运行检测死锁算法对系统的状态进行检测,发现死锁便予以解除。
    • 线程交互
      • this.wait():让占有this的线程等待,并临时释放占用
      • this.notify():唤醒等待在this的单个线程。
      • this.notifyAll():唤醒等待在this的所有线程。
      • wait方法和notify方法是Object上的方法,因为所有的Object都可以被用来作为同步对象
    • 线程池
      线程池
http://www.lryc.cn/news/532247.html

相关文章:

  • 2025游戏行业的趋势预测
  • 4-ET框架demo的运行
  • kamailio源文件modules.lst的内容解释
  • 亚远景-从SPICE到ASPICE:汽车软件开发的标准化演进
  • vue3 + ElementPlus 封装列表表格组件包含分页
  • 挑战项目 --- 微服务编程测评系统(在线OJ系统)
  • Med-R2:基于循证医学的检索推理框架:提升大语言模型医疗问答能力的新方法
  • Oh3.2项目升级到Oh5.0(鸿蒙Next)具体踩坑记录(一)
  • 【自动化办公】批量图片PDF自定义指定多个区域识别重命名,批量识别铁路货物运单区域内容改名,基于WPF和飞桨ocr深度学习模型的解决方案
  • Spring Boot篇
  • Unity3D学习笔记(二)
  • 个人毕业设计--基于HarmonyOS的旅行助手APP的设计与实现(挖坑)
  • 游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文
  • python开发:爬虫示例——GET和POST请求处理
  • 开源数据分析工具 RapidMiner
  • Vue canvas画图画线例子,数据回显与隔离,点拖拽修改
  • Python实现CAN FD 通信(基于PCAN开发CAN FD测试工具)
  • LeetCode--347. 前 K 个高频元素/Golang中的堆(container/heap)
  • 关于大数据
  • 9-收纳的知识
  • 堆的实现——堆的应用(堆排序)
  • 机器学习6-全连接神经网络2
  • 基于 SpringBoot 的电影购票系统
  • C++SLT(三)——list
  • C++ Primer 算术运算符
  • 数据结构-堆和PriorityQueue
  • 【玩转 Postman 接口测试与开发2_017】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(下)
  • R语言 | 使用 ComplexHeatmap 绘制热图,分区并给对角线分区加黑边框
  • React图标库: 使用React Icons实现定制化图标效果
  • Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API