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

龙岗网站优化开原 铁岭网站建设

龙岗网站优化,开原 铁岭网站建设,吉林省建设厅官方网站,内部网站建设要求#x1f4da; Java 23 集合框架详解#xff1a;Set 接口及实现类#xff08;HashSet、TreeSet、LinkedHashSet#xff09; #x1f4d6; 概述 Set 是 Java 集合框架中用于存储 无序、不重复元素 的接口。它的实现类包括 HashSet、TreeSet 和 LinkedHashSet#xff0c;它… Java 23 集合框架详解Set 接口及实现类HashSet、TreeSet、LinkedHashSet 概述 Set 是 Java 集合框架中用于存储 无序、不重复元素 的接口。它的实现类包括 HashSet、TreeSet 和 LinkedHashSet它们在底层数据结构、排序规则和性能特性上存在显著差异。 本文将详细介绍 Set 接口及其实现类 的使用案例、底层实现、性能优化方案、多线程优化及注意事项。 ️ 1. Set 接口的常用实现类 实现类底层数据结构排序方式是否允许 null线程安全性HashSet哈希表无序允许否TreeSet红黑树自然顺序/自定义排序不允许否LinkedHashSet哈希表 双向链表按插入顺序允许否 2. HashSet 详解 ✅ 2.1 特点 基于哈希表实现元素按 哈希值 存储存取效率高。不保证元素顺序。允许存储一个 null 值。插入、删除、查找操作的平均时间复杂度为 O(1)。 2.2 使用案例 import java.util.HashSet;public class HashSetExample {public static void main(String[] args) {HashSetString set new HashSet();set.add(Alice);set.add(Bob);set.add(Charlie);// 尝试添加重复元素set.add(Alice);// 遍历set.forEach(System.out::println);} }输出 Alice Bob Charlie2.3 优化方案 指定初始容量和负载因子HashSetString set new HashSet(16, 0.75f);避免频繁扩容设置合适的初始容量减少性能开销。 ⚠️ 2.4 多线程优化 HashSet 是 线程不安全的可以使用 Collections.synchronizedSet() 方法或 ConcurrentHashMap 来实现线程安全。 import java.util.Collections; import java.util.HashSet; import java.util.Set;public class SynchronizedHashSetExample {public static void main(String[] args) {SetString synchronizedSet Collections.synchronizedSet(new HashSet());synchronizedSet.add(Alice);synchronizedSet.add(Bob);synchronized (synchronizedSet) {synchronizedSet.forEach(System.out::println);}} }3. TreeSet 详解 ✅ 3.1 特点 基于红黑树实现元素按 自然顺序 或 自定义顺序 排序。不允许存储 null 值。插入、删除、查找操作的时间复杂度为 O(log n)。 3.2 使用案例 import java.util.TreeSet;public class TreeSetExample {public static void main(String[] args) {TreeSetInteger set new TreeSet();set.add(20);set.add(10);set.add(30);// 遍历set.forEach(System.out::println);} }输出 10 20 30使用自定义排序 import java.util.TreeSet; import java.util.Comparator;public class CustomTreeSetExample {public static void main(String[] args) {TreeSetString set new TreeSet(Comparator.reverseOrder());set.add(Alice);set.add(Bob);set.add(Charlie);set.forEach(System.out::println);} }输出 Charlie Bob Alice3.3 优化方案 避免使用 null 值因为 TreeSet 不允许存储 null。选择合适的排序规则根据业务需求使用 自然顺序 或 自定义排序。 ⚠️ 3.4 多线程优化 TreeSet 是 线程不安全的可以使用 Collections.synchronizedSet() 来实现线程安全。 import java.util.Collections; import java.util.TreeSet; import java.util.Set;public class SynchronizedTreeSetExample {public static void main(String[] args) {SetInteger synchronizedSet Collections.synchronizedSet(new TreeSet());synchronizedSet.add(10);synchronizedSet.add(20);synchronized (synchronizedSet) {synchronizedSet.forEach(System.out::println);}} }4. LinkedHashSet 详解 ✅ 4.1 特点 基于哈希表和双向链表实现。保留元素的插入顺序。允许存储一个 null 值。 4.2 使用案例 import java.util.LinkedHashSet;public class LinkedHashSetExample {public static void main(String[] args) {LinkedHashSetString set new LinkedHashSet();set.add(Alice);set.add(Bob);set.add(Charlie);// 遍历set.forEach(System.out::println);} }输出 Alice Bob Charlie4.3 优化方案 使用 LinkedHashSet 时考虑内存占用问题因为双向链表会占用更多内存。适用于需要按插入顺序遍历的场景。 ⚠️ 4.4 多线程优化 LinkedHashSet 是 线程不安全的可以使用 Collections.synchronizedSet() 来实现线程安全。 import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set;public class SynchronizedLinkedHashSetExample {public static void main(String[] args) {SetString synchronizedSet Collections.synchronizedSet(new LinkedHashSet());synchronizedSet.add(Alice);synchronizedSet.add(Bob);synchronized (synchronizedSet) {synchronizedSet.forEach(System.out::println);}} }5. 三者对比总结 特性HashSetTreeSetLinkedHashSet底层数据结构哈希表红黑树哈希表 双向链表是否允许 null是否是排序方式无序自然顺序/自定义排序插入顺序插入/删除性能O(1)O(log n)O(1)适用场景快速查找和去重排序数据集保留插入顺序 6. 选择指南 场景推荐实现类快速查找和去重HashSet需要排序的集合TreeSet需要保留插入顺序的集合LinkedHashSet ⚙️ 7. 总结 HashSet 适用于 快速查找和去重 的场景。TreeSet 适用于 需要排序的集合。LinkedHashSet 适用于 需要保留插入顺序的集合。
http://www.dnsts.com.cn/news/181730.html

相关文章:

  • 外贸公司网站设计哪家好做网站的公司找客户
  • 河北住房和城乡建设厅网站官网wordpress+登录+api接口
  • 公司做网站推广需要多少钱团购小程序
  • 低价车网站建设html5开发wap网站
  • js建设网站外网cpanel伪静态wordpress
  • 宁波网站设计方案北京网站优化实战
  • .net 手机网站源码下载各大浏览器的网址
  • 网络服务商怎么咨询seo蒙牛伊利企业网站专业性诊断
  • 石家庄住房和城乡建设局网站销售公司怎么做网站
  • 白银市住房与建设局网站住房和城乡建设部网站三定
  • 建设什么网站好wordpress 批量爆破
  • asp是网站开发吗微信小程序营销推广
  • 招标建设网站北京小学大兴网站建设
  • 西安 医疗网站制作杭州职称评审系统网站
  • 创建网站平台要多少钱网站开发补全
  • 西安高端品牌网站重庆建设网站公司哪家好
  • 网站站群 硬盘扩容 申请报告特产网站设计
  • 瑞安网站建设市场营销经典案例
  • 网站导航固定专业建设目标
  • 直播网站app下载58网站怎么做品牌推广
  • 搜索引擎网站排名优化方案的搜索引擎优化
  • 做爰网站視屏网站建设公司用5g
  • 微信小程序企业网站wordpress返回顶部图标
  • 山东省建设执业注册中心网站西安搜索引擎优化
  • 注册完域名 如何做网站网页设计培训钱
  • 营销型网站设计方针网站设置字体样式
  • 空调维修自己做网站房产系统平台
  • 2015做外贸网站好做吗上海市各区建设局网站
  • 网站开发上线流程图装修公司网站怎么做
  • 如何创建一个网站的流程惠州建设企业网站