![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java集合、数据结构与算法
Java集合、数据结构与算法
真理剑客
认知你自己
展开
-
fail-fast、fail-safe
快速失败、安全失败都是基于迭代器。 一、fail-fast 抛出ConcurrentModificationException异常。 单线程环境:使用迭代器遍历一个集合的过程中,修改了它的结构(增、删、扩容、排序、trim)。使用iterator的remove()方法不会报这个错。 多线程环境:当一个线程使用迭代器遍历这个集合,另一个线程修改了这个集合的结构。 fail-fast机制是如何起检测的...原创 2020-03-16 18:13:14 · 167 阅读 · 0 评论 -
排序算法01: 选择排序
选择排序是这样的, 首先,找到数组中最小的那个元素,将它与第一个元素交换。 其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序 选择排序有如下两个特点: 运行时间和输入无关,扫描一遍数组并不能为下一遍扫描提供什么信息。 数据移动是最少的,选择排序用了N次交换,和数组大小是线性关系。 Selection.java public class Sel...原创 2018-11-11 19:30:20 · 216 阅读 · 0 评论 -
排序算法02: 插入排序
插入排序是这样一种排序: 为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。 与选择排序一样,当前索引左边的元素是有序的,但它们的最终位置还不确定。 插入排序所需的时间取决于输入中元素的初始顺序,在实际应用中对某些类型的非随即数组很有效。 插入排序的比较次数范围为 N-1 ~ N^2/2 插入排序的交换次数为范围为 0 ~ N^2/2 Insertion.java ...原创 2018-11-11 20:07:41 · 190 阅读 · 0 评论 -
Java 数组
一、什么是数组 线性表(linear list):0个或有限多个相同类型的数据元素的序列。 线性表有两种物理结构: 顺序存储结构: 用一段地址连续的存储单元依次存储线性表的数据元素,相邻两元素的存储位置也是挨着的。 链式存储结构: 用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。 Java中的数组结构就是线性表的顺序存储结构,Node之间的序列靠存储单元位...原创 2018-11-27 11:46:19 · 108 阅读 · 0 评论