概述 Map 是 Java 中的一种键值对集合类型的接口,它还提供了一些对数组进行排序、打印、和对 List 进行转换的静态方法。 常用的实现类有: HashMap:哈希图。 LinkedHashMap:链哈希图。 TreeMap:树形哈希图。 HashMap Java 中最常用的 Map 实现就是 HashMap。 数据结构 JDK8 中 HashMap 的数据结构是数组+链表+红黑树。 数组(Node[] table):HashMap 的核心是一个动态数组,用于存储键值对。这个数组被称为桶数组,其每个元素称为一个“桶”(Bucket),每个桶的索引是对键的哈希码通过哈希函数处理得到的。 链表/红黑树:为了解决哈希冲突(两个不同...
概述 List 是 Java 中的一种有序、可重复的集合接口类型。其常用的实现类有: ArrayList:动态数组。 LinkedList:链表。 ArrayList 和 LinkedList 的区别 ArrayList 和 LinkedList 的区别主要体现在数据结构、用途、是否支持随机访问、内存占用等方面。 数据结构 ArrayList 基于数组实现。 LinkedList 基于(双向)链表实现。 适用性 查找访问:ArrayList 在使用下标进行查找时更有优势。 ArrayList 调用 get(int index) 方法时可以直接通过数组下标获取元素,查找的时间复杂度是 $O(1)$; LinkedList 调用...
概述 Java 集合框架可以分类两大类型: Collection:最基本的集合类型的接口,提供了添加、删除、清空等基本操作,还提供了一些对集合进行排序、二分查找、同步的静态方法。 其主要的子接口有: List:有序、可重复的集合。常用的实现类有: ArrayList:动态数组。 LinkedList:链表。 Set:无序、不可重复的集合。常用的实现类有: HashSet:哈希集合。实际上是通过一个 HashMap 来实现。 LinkedHashSet:链哈希集合。 TreeSet:属性集合。是在 TreeMap 的基础上进行实现。 Queue:队列。常用的实现类有: ArrayDeque:双端队列。 PriorityQueue:优...
特点 Java 比较突出的特点: 面向对象:封装,继承,多态。 平台无关性(跨平台):Java 是一种 “一次编写,到处运行(Write Once,Run any Where)” 的语言。也就是说,采用 Java 语言编写的程序具有很好的可移植性。保证 Java 可移植性的正是 Java 的虚拟机机制。 多线程:Java 语言提供了多线程支持。 JIT(Just-In-Time)编译:指的是即时编译器,它可以在程序运行时将字节码转换为本地机器码来提高程序运行速度。 编译与解释并存:需要先将源代码编译成字节码,再解释执行字节码。 JVM、JDK 和 JRE JVM(Java Virtual Machine,Java 虚拟机):JVM...
Java提供了三种创建线程的方法: 重写Thread类的run(); 通过实现Runnable接口; 通过Callable和FutureTask创建线程。 通过 Thread 类创建 在Java中,每一个线程实际的创建和运行都是通过Thread类。Thread类的run()方法就是当前线程的入口点(入口方法)。 在Java中,在运行main()方法时,实际上是创建了一个名为main的线程。而main()方法则是当前应用程序main线程的入口点(入口方法)。 直接通过Thread类的无参构造函数创建Thread对象,创建出来的线程并没有任何实际的作用。也就是说它的run()方法并没有执行任何实际的任务。 通过Thread类直接创建线程...
概念 Java 并发编程中涵盖了以下这些概念: 进程 线程 并发 并行 进程 进程(Process)是指在计算机中正在运行的一个程序的实例。进程是操作系统进行资源分配和调度的基本单位(资源分配的最小单位),用于执行程序的代码和管理与该程序相关的资源。每个进程都有自己的地址空间、内存、文件句柄等资源。 进程的一些相关概念: 程序:程序是静态的,是一组指令和数据的集合;而进程是程序在执行时的一个实例,是一个动态的实体。 程序被运行时,程序的代码从硬盘被加载到内存中,此时就开启了一个进程。 程序可以同时运行多个实例进程,也可以仅运行一个实例线程。 地址空间:进程的地址空间包括代码段、数据段、堆和栈。 地址空间使得每个进程都在自己的独立内...
反射 反射是Java中一种用于动态获取类或对象的信息以及动态调用对象方法的功能机制。在运行状态中,对于任意一个类,使用反射可以获取这个类的所有属性和方法;对于任意一个对象,使用反射能够调用它的任意属性和方法。利用反射可以无视对象的修饰符,调用类里面的内容。利用反射可以跟配置文件结合起来使用,把要创建的对象信息和方法写在配置文件中。 使用反射包含以下步骤: 获取class字节码文件对象。 利用反射可以操作类或对象的信息有: 构造方法(获取、创建对象) 成员变量(获取、赋值) 成员方法(获取、运行) 获取字节码文件对象 Java中的每个类都是一个Class对象(字节码文件对象)。获取字节码文件对象共有以下三种方式: 通过class字节...