Java开发基础系列(十三):集合对象(Set接口)

这篇具有很好参考价值的文章主要介绍了Java开发基础系列(十三):集合对象(Set接口)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

😊 @ 作者: 一恍过去
💖 @ 主页: https://blog.csdn.net/zhuocailing3390
🎊 @ 社区: Java技术栈交流
🎉 @ 主题: Java开发基础系列(十三):集合对象(Set接口)
⏱️ @ 创作时间: 2023年07月27日

Java开发基础系列(十三):集合对象(Set接口),Java,java,python,开发语言

Set 接口的实现类

  • HashSet: 基于哈希表实现的集合,不保证元素的顺序。
  • LinkedHashSet: 基于哈希表和双向链表实现的集合,保持元素插入顺序。
  • TreeSet: 基于红黑树实现的有序集合,按照元素的自然排序或指定的比较器排序。

HashSet

HashSet 是 Java 集合框架中 Set 接口的一个实现类,它基于哈希表数据结构实现,用于存储一组不重复的元素。HashSet 主要用于快速查找和去重,它不保证元素的顺序,即不按照插入的顺序进行存储。

HashSet 是 Java 中常用的集合类,适用于需要快速查找和去重的场景。由于其基于哈希表的实现,查找元素的效率非常高,但它不保证元素的顺序。如果需要保持插入顺序或对元素进行排序,考虑使用 LinkedHashSet 或 TreeSetHashSet 适用于需要快速查找和去重的无序集合场景。

优点:

  • 去重: HashSet 中不允许重复的元素,因此可以用于去除集合中重复的元素,确保集合中的元素是唯一的。
  • 快速查找: HashSet 基于哈希表实现,查找元素的时间复杂度是 O(1),这使得在大型数据集中快速查找某个元素成为可能。

基础用法:

  • 创建 HashSet 对象
    使用无参构造函数可以创建一个空的 HashSet 对象,并使用 add() 方法向集合中添加元素。

    HashSet<String> set = new HashSet<>();
    set.add("AA");
    set.add("BB");
    set.add("CC");
    
  • 遍历 HashSet
    HashSet 不支持通过索引访问元素,因为它是无序的,所以一般使用迭代器或增强型 for 循环遍历集合中的所有元素。

    for (String fruit : set) {
        System.out.println(fruit);
    }
    
  • 删除元素
    使用 remove() 方法可以从集合中删除指定的元素。

    set.remove("CC"); // 删除元素 "CC"
    
  • 获取元素个数
    使用 size() 方法可以获取集合中元素的个数。

    int size = set.size(); // 获取集合中元素的个数
    
  • 清空集合
    使用 clear() 方法可以清空集合中的所有元素。

    set.clear(); // 清空集合中的所有元素
    

LinkedHashSet

LinkedHashSet 是 Java 集合框架中 Set 接口的一个实现类,它是 HashSet 的一个子类。LinkedHashSet 同样用于存储一组不重复的元素,但与 HashSet 不同的是,它保持元素的插入顺序,即按照元素插入的顺序进行存储。LinkedHashSet 通过使用链表和哈希表结合的方式来实现这一特性。

由于其使用链表和哈希表结合的方式,既可以保持元素的插入顺序,又可以在 O(1) 的时间复杂度内进行元素的查找和去重操作。如果需要在集合中保持插入顺序并且不允许重复元素,LinkedHashSet 将是一个很好的选择。

优点:

  • 去重: LinkedHashSet 中不允许重复的元素,因此可以用于去除集合中重复的元素,确保集合中的元素是唯一的。
  • 保持插入顺序: LinkedHashSet 会保持元素的插入顺序,即按照元素插入的顺序进行存储,这使得在迭代时可以按照插入顺序访问元素。

基础用法:

  • 创建 LinkedHashSet 对象
    使用无参构造函数可以创建一个空的 LinkedHashSet 对象,并使用 add() 方法向集合中添加元素。

    LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
    linkedHashSet.add("AA");
    linkedHashSet.add("BB");
    linkedHashSet.add("CC");
    
  • 遍历 LinkedHashSet
    LinkedHashSet 会保持元素的插入顺序,因此可以使用迭代器或增强型 for 循环按照插入顺序遍历集合中的所有元素。

    for (String fruit : linkedHashSet) {
        System.out.println(fruit);
    }
    
  • 删除元素
    使用 remove() 方法可以从集合中删除指定的元素。

    linkedHashSet.remove("CC"); // 删除元素 "CC"
    
  • 获取元素个数
    使用 size() 方法可以获取集合中元素的个数。

    int size = linkedHashSet.size(); // 获取集合中元素的个数
    
  • 清空集合
    使用 clear() 方法可以清空集合中的所有元素。

    linkedHashSet.clear(); // 清空集合中的所有元素
    

TreeSet

TreeSet 是 Java 集合框架中 Set 接口的一个实现类,它使用红黑树来存储元素。TreeSet 中的元素是有序的,并且不允许重复元素。根据元素的自然顺序或指定的比较器,TreeSet 可以对元素进行自动排序。

TreeSet 是 Java 中常用的集合类,适用于需要排序、去重以及快速查找的场景。它适用于元素需要按照自然顺序或者自定义规则排序的情况。记住,使用 TreeSet 需要确保元素类实现了 Comparable 接口,或者通过比较器进行定制排序,以确保元素可以正确地排序存储。由于红黑树的结构,TreeSet 在查找元素时效率非常高。

优点:

  • 排序: TreeSet 会根据元素的自然顺序或指定的比较器对元素进行排序,因此它可以用于按照一定规则对元素进行排序存储。
  • 去重: TreeSet 中不允许重复的元素,因此可以用于去除集合中重复的元素,确保集合中的元素是唯一的。
  • 快速查找: 红黑树的结构使得查找元素的时间复杂度为 O(log n),在大型数据集中快速查找某个元素成为可能。

基础用法:

  • 创建 TreeSet 对象
    使用无参构造函数可以创建一个空的 TreeSet 对象,并使用 add() 方法向集合中添加元素。

    TreeSet<String> treeSet = new TreeSet<>();
    treeSet.add("AA");
    treeSet.add("BB");
    treeSet.add("CC");
    
  • 自然排序和定制排序
    TreeSet 可以使用元素的自然顺序(如果元素类实现了 Comparable 接口)或者通过自定义的比较器来进行排序。

    // 自然排序:元素类实现 Comparable 接口,并定义 compareTo 方法
    TreeSet<Integer> naturalTreeSet = new TreeSet<>();
    naturalTreeSet.add(5);
    naturalTreeSet.add(2);
    naturalTreeSet.add(8); // 结果:[2, 5, 8]
    
    // 定制排序:使用自定义的比较器 Comparator
    TreeSet<Integer> customTreeSet = new TreeSet<>((a, b) -> b - a); // 降序排序
    customTreeSet.add(5);
    customTreeSet.add(2);
    customTreeSet.add(8); // 结果:[8, 5, 2]
    
  • 遍历 TreeSet
    TreeSet 中的元素是有序的,可以使用迭代器或增强型 for 循环按顺序遍历集合中的所有元素。

    for (String fruit : treeSet) {
        System.out.println(fruit);
    }
    
  • 删除元素
    使用 remove() 方法可以从集合中删除指定的元素。

    treeSet.remove("CC"); // 删除元素 "CC"
    
  • 获取元素个数
    使用 size() 方法可以获取集合中元素的个数。

    int size = treeSet.size(); // 获取集合中元素的个数
    
  • 清空集合
    使用 clear() 方法可以清空集合中的所有元素。

    treeSet.clear(); // 清空集合中的所有元素
    

Java开发基础系列(十三):集合对象(Set接口),Java,java,python,开发语言文章来源地址https://www.toymoban.com/news/detail-608877.html

到了这里,关于Java开发基础系列(十三):集合对象(Set接口)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaSE】Java基础语法(十三):Java 中的集合(十分全面)

    List (对付顺序的好帮⼿): 存储的元素是有序的、可重复的。 Set (注重独⼀⽆⼆的性质): 存储的元素是⽆序的、不可重复的。 Queue (实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。 Map (⽤ key 来搜索的专家): 使⽤键值对(key-value)存

    2024年02月10日
    浏览(42)
  • java基础之set集合练习(HashSet,LinkedHashSet,TreeSet)

    Collection 接口的特点是     存放list与set共性内容 没有直接实现类  没有明确的存储特点要求           ; Set 接口的特点是元素 无 (有|无)顺序,不可   (可以|不可以)重复; A.可以利用Set 创建集合对象,存储多个对象 B.可以利用下标操作集合中的数据 C.Set 集合中所

    2024年01月23日
    浏览(57)
  • Java基础六 - Collection集合List、Set、Queue,Map

    1. List - ArrayList、LinkedList、Vector ArrayList         2. LinkedList         3. Vector         4. 常见使用方法 2. Set - HashSet、LinkedHashSet、TreeSet 1. HashSet 2. LinkedHashSet 3. TreeSet 4. 常用方法 3. Map - HashMap、TreeMap、LinkedHashMap、Hashtable 1. HashMap 2. LinkedHashMap 3. TreeMap 4. Hashtable 5.

    2024年02月14日
    浏览(49)
  • 【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    本篇主要说明在Java8及以上版本中,使用stream().filter()来过滤List对象,查找符合条件的集合。 集合对象以学生类(Student)为例,有学生的基本信息,包括:姓名,性别,年龄,身高,生日几项。 我的学生类代码如下: 下面来添加一些测试用的数据,代码如下: 添加过滤条件

    2024年02月12日
    浏览(68)
  • 第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具类)

    1.1 生活中的容器 1.2 数组的特点与弊端 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。 另一方面,使用数组存储对象方面具有 一些弊端 ,而Java 集合就像一种容器,可以 动态地 把多个对象的引用放入容器中。 数

    2024年01月25日
    浏览(44)
  • 【java 基础二 】- 面向对象、类、接口等

    Java面向对象编程(OOP)是一种编程范式,其旨在通过将程序逻辑封装在对象中来使代码更易于理解和维护。Java是一种面向对象的编程语言,它支持封装、继承和多态等概念。以下是Java面向对象编程的核心概念: 对象(Object):对象是具有属性和行为的实体。在Java中,对象是通过

    2024年02月08日
    浏览(46)
  • 【Java基础篇 | 面向对象】—— 聊聊什么是接口(下篇)

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得,欢迎大家在评论区交流讨论💌 上篇(【Java基础篇 | 面向对象】—— 聊聊什么是接口(上篇))中我们已经

    2024年02月05日
    浏览(31)
  • Java集合利器 Map & Set

    Map 和 Set 是一种专门用来进行搜索的数据结构,其搜索的效率与其具体的实例化子类有关。它们分别定义了两种不同的数据结构和特点: Map(映射) :Map是一种键值对(key-value)的集合,每个键值对都是一个元素。 Set(集合) :Set是一种不允许重复元素(key)的集合。 通

    2024年02月12日
    浏览(37)
  • 【Java】Set集合的基本使用

       📝个人主页:哈__ 期待您的关注  ①:add(Object o):向Set集合中添加元素,不允许添加重复数据。 ②:size():返回Set集合中的元素个数 注意:不会按照保存的顺序存储数据(顺序不定),遍历时不能保证下次结果和上次相同。且向HashSet集合中添加元素,HashSet add方法实质是

    2024年04月13日
    浏览(45)
  • Java 中 Set集合常用方法

    对象名.add() 向Set集合中添加元素 (但不能添加重复元素,Set集合中不允许元素重复) addAll(Collection c) 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中。 对象名.size() 返回 set 中的元素数(其容量) 对象名.isEmpty() 判断集合中是否有元素,若有则返回 true;

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包