码谱 - 学习编程更靠谱码谱

最新发布 第2页

Java 中的 LinkedList-码谱
Java List

Java 中的 LinkedList

阅读(1898)赞(0)

LinkedList 在开发中并不常用,在大多数场景下,我们会采用 ArrayList。本篇将从多个维度解读 LinkedList 与 ArrayList 存在的差异。 底层结构 LinkedList 与 ArrayList 底层结构不同:...

Java List

Java 中的fail-fast 与 fail-safe

阅读(1850)赞(2)

在 Java 中,Set 和 List 可以循环遍历,因为其拥有可迭代能力,主要还是 Iterator 的功劳。 初识 首先看一下二者如何定义: fail-fast 一旦发现遍历的同时有其他人修改,则立即抛出异常 fail-safe 当发现...

Java List

ArrayList 扩容规则

阅读(1456)赞(3)

Java 中,ArrayList 是 List 最经典的实现,由于 ArrayList 底层是数组,掌握其扩容机制十分必要。 下面的讨论,基于 JAVA8,不同的JDK版本,某些规则会有差异。 构造器容量 我们一般在一定一个 ArrayLi...

算法

Java 二分查找与优化思路

阅读(1532)赞(2)

二分查找是一种高效的查找方法。其主要思路是:对已经排序的数据,每次取二分之一处的元素与目标元素比较,如果相等就返回目标位置,否则继续下一轮查找。 二分思想 二分查找文字描述: 排好序的数组 arr 定义左边界 left、右边界 right,...

算法

Java 快速排序多种实现

阅读(1739)赞(0)

快速排序思想 每一轮遍历选择一个基准点(pivot)进行分区。 小于基准点的元素进入一个分区,大于基准点的元素进入另一个分区。 当分区完成时,基准点的位置就是排序后该元素应该处于的位置。 在每个子分区中重复以上过程,直到分区中元素少于等于 ...

算法

Java 插入排序与优化

阅读(1632)赞(0)

插入排序思想 将数组分为两个部分,排序部分和未排序部分。 每一轮遍历从未排序部分取出第一个元素,插入到排序部分的对应位置。 重复以上过程,直到整个数组有序。 代码实现 为了能更好地展示冒泡排序的主要思想,我将数据准备工作定义在 main()...

算法

Java 选择排序思路

阅读(1651)赞(0)

选择排序是一种经典的排序算法。 选择排序思想 将数组分为两个子集,前一个子集是排序的,后一个子集是未排序的。 每一轮遍历从未排序的子集中选择最小的元素放入排序子集的末端。 重复以上过程,直到整个数组有序。 经典实现 为了能更好地展示冒泡排序...

算法

Java 冒泡排序与优化

阅读(1876)赞(0)

冒泡排序是最经典的排序算法之一,其主要思路是两两比较相邻位置的元素,并交换其位置,直到结束。 排序存在两种场景:升序和降序,这里仅讨论升序的情况。 冒泡思想 冒泡排序文字描述: 依次比较数组中响铃两个元素的大小,若前一个大于后一个,则交换两...

Java 中的常量池-码谱
Java虚拟机

Java 中的常量池

阅读(1951)赞(32)

Java 中有多种常量池,常量池可以实现数据共享,节省内存开销,避免频繁创建对象与销毁对象等诸多好处。 常量池分类 一般,Java 中的常量池被分为以下几类: class 字节码常量池:保存字面量(就是一些字符串和被final修饰的变量)和...

Java GC 垃圾回收与内存管理-码谱
Java虚拟机

Java GC 垃圾回收与内存管理

阅读(2174)赞(0)

垃圾收集器 (GC)负责 Java 中的内存管理。因此,程序员不需要显式地处理内存分配和释放。 在 Java 中,JVM 一开始就预留了一定的内存。有时,实际使用的内存明显少于保留量。在这种情况下,我们更愿意将多余的内存返回给操作系统。 这...