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

怎样使网站排名靠前经典广告

怎样使网站排名靠前,经典广告,网站建设裕鸿国际,服装设计在哪里可以学📚 Java 23 集合框架详解:Set 接口及实现类(HashSet、TreeSet、LinkedHashSet) 📖 概述 Set 是 Java 集合框架中用于存储 无序、不重复元素 的接口。它的实现类包括 HashSet、TreeSet 和 LinkedHashSet,它…

📚 Java 23 集合框架详解:Set 接口及实现类(HashSetTreeSetLinkedHashSet


📖 概述

Set 是 Java 集合框架中用于存储 无序、不重复元素 的接口。它的实现类包括 HashSetTreeSetLinkedHashSet,它们在底层数据结构、排序规则和性能特性上存在显著差异。

本文将详细介绍 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) {HashSet<String> set = new HashSet<>();set.add("Alice");set.add("Bob");set.add("Charlie");// 尝试添加重复元素set.add("Alice");// 遍历set.forEach(System.out::println);}
}

输出

Alice
Bob
Charlie

🛠 2.3 优化方案

  1. 指定初始容量和负载因子
    HashSet<String> set = new HashSet<>(16, 0.75f);
    
  2. 避免频繁扩容,设置合适的初始容量,减少性能开销。

⚠️ 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) {Set<String> 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) {TreeSet<Integer> 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) {TreeSet<String> set = new TreeSet<>(Comparator.reverseOrder());set.add("Alice");set.add("Bob");set.add("Charlie");set.forEach(System.out::println);}
}

输出

Charlie
Bob
Alice

🛠 3.3 优化方案

  1. 避免使用 null,因为 TreeSet 不允许存储 null
  2. 选择合适的排序规则,根据业务需求使用 自然顺序自定义排序

⚠️ 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) {Set<Integer> 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) {LinkedHashSet<String> set = new LinkedHashSet<>();set.add("Alice");set.add("Bob");set.add("Charlie");// 遍历set.forEach(System.out::println);}
}

输出

Alice
Bob
Charlie

🛠 4.3 优化方案

  1. 使用 LinkedHashSet 时,考虑内存占用问题,因为双向链表会占用更多内存。
  2. 适用于需要按插入顺序遍历的场景

⚠️ 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) {Set<String> 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.tj-hxxt.cn/news/38987.html

相关文章:

  • 定制网站成本多少百度站长中心
  • ecshop怎么做网站免费观看b站的广告网站平台
  • 小程序制作网站百度seo如何优化
  • 买东西网站有哪些百度网站打不开
  • java和PHP做网站哪个好汽车行业网站建设
  • 有哪些做网站的济宁百度竞价推广
  • 网站的制作哪家好建立公司网站需要多少钱
  • 哇哈哈电子商务网站建设策划书seo的优化方向
  • 人力资源网站怎么做谷歌官网网址
  • 在微信上做彩票网站吗网站主页
  • 做英文网站多钱腾讯3大外包公司
  • 苏州知名网站制作百度爱采购平台登录
  • 淄博北京网站建设网络推广怎么做效果好
  • 地方信息网站源码百度指数官网
  • 郑州网站建设推广渠道站长统计app软件
  • 生鲜网站建设费用旅游产品推广有哪些渠道
  • wordpress设置菜单导航栏百度优化培训
  • 医疗网站平台建设方案seo论坛站长交流
  • 神马网站排名今日最新财经新闻
  • 菜鸟学做网站的步骤制作网站需要多少费用
  • 网站建设预付款如何付自动收录网
  • 建设网站的费用如何在百度上营销
  • 怎样用腾讯云做网站深圳推广公司哪家最好
  • 请问那个网站做推广好点长沙网络公司最新消息
  • pc端网站自适应代码青岛关键词排名系统
  • wordpress 网站主题2023年的新闻十条
  • 本地装修公司怎么找seo营销推广公司
  • 深圳市人民政府门户网站社区营销
  • 二七区网站建设杭州搜索引擎推广排名技术
  • 杭州网站建设代理商seo手机优化软件哪个好用