
集合
文章平均质量分 85
帅的飞起来
走好脚下路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
集合之List--List如何安全删除
方法适用场景特点单线程环境安全高效removeIf()Java 8+,单线程环境简洁,适合函数式编程倒序遍历for循环根据索引删除避免索引错位多线程环境线程安全,适合读多写少+ 锁多线程环境线程安全,需要手动加锁生成新列表不修改原列表,适合函数式编程。原创 2025-03-03 11:39:35 · 1897 阅读 · 0 评论 -
集合之List--List如何实现排序
如果需要对自定义对象排序,可以实现Comparable接口或使用Comparator示例:自定义对象排序int age;@Override方法适用场景特点自然排序或自定义排序简单易用,支持降序排序自然排序或自定义排序Java 8 引入,直接操作List流式处理,支持并行排序适合函数式编程风格实现Comparable自定义对象的自然排序需要修改类代码使用Comparator自定义排序规则灵活,无需修改类代码。原创 2025-03-03 11:21:44 · 1068 阅读 · 0 评论 -
集合之List--List如何去重
方法是否保留顺序时间复杂度适用场景HashSet不保留O(n)快速去重,不关心顺序保留O(n)快速去重,保留顺序保留O(n)函数式编程风格手动遍历去重保留O(n²)数据量较小TreeSet排序O(n log n)去重并排序保留O(n)使用第三方库。原创 2025-03-03 11:04:49 · 882 阅读 · 0 评论 -
集合之List--ArrayList是否线程安全?如何线程安全地操作ArrayList?
ArrayList本身不是线程安全的。可以通过或手动同步来实现线程安全。选择哪种方式取决于具体的应用场景和性能需求。原创 2025-03-03 10:04:04 · 510 阅读 · 0 评论 -
集合之List--ArrayList扩容机制
ArrayList的默认初始容量为 10。当元素数量超过当前容量时,会触发扩容,新容量通常是原容量的 1.5 倍。扩容操作会复制元素到新数组,时间复杂度为 O(n)。可以通过提前调整容量,或通过trimToSize减少容量。理解ArrayList的扩容机制有助于在性能敏感的场景中优化内存使用和性能。原创 2025-03-03 10:39:25 · 374 阅读 · 0 评论 -
集合之线程安全--java中有哪些线程安全的集合
集合类型线程安全原理适用场景写时复制 + 锁读多写少的列表写时复制 + 锁读多写少的集合分段锁(JDK 7)或 CAS + synchronized高并发的键值对存储跳表 + CAS需要有序的键值对存储跳表 + CAS需要有序的集合锁 + 条件变量生产者-消费者模型方法级别加锁(synchronized)需要线程安全的集合Vector方法级别加锁(synchronized)不推荐使用Hashtable方法级别加锁(synchronized)不推荐使用。原创 2025-02-27 15:37:01 · 1102 阅读 · 0 评论 -
集合之List--ArrayList与LinkedList以及List与数组、Set的区别
在java中,List是最常用的集合类型之一,而ArrayList和LinkedList是List接口的两种主要实现。它们各有优缺点,适用于不同的场景。此外,List与数组、Set之间也有显著的区别。以下是对他们的详细对比和分析底层实现:基于动态数组特点随机访问速度快:通过索引访问元素的时间复杂度为O(1)。插入和删除效率低:在中间插入或删除元素时,需要移动后续元素,时间复杂度为O(n)内存占用少:只需要存储元素本身,不需要额外的指针适用场景:频繁读取数据(如遍历或随机访问)数据量较大且插入/删除操作较少的原创 2025-02-26 16:39:20 · 1175 阅读 · 0 评论