• 【Java集合框架】14——LinkedHashSet 类


    一、LinkedHashSet 类的介绍

    LinkedHashSet是HashSet的有序版本,它跨所有元素维护一个双向链接的List。当需要维护迭代顺序时,就使用这个类。当遍历HashSet时,顺序是不可预测的,而LinkedHashSet允许我们按插入元素的顺序遍历元素。当使用迭代器循环使用LinkedHashSet时,元素将按插入的顺序返回。

    LinkedHashSet的层次结构如下:
    在这里插入图片描述

    LinkedHashSet类声明:

    public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable  
    
    • 1

    LinkedHashSet类的要点如下:

    • LinkedHashSet类只包含HashSet这样的唯一元素。
    • LinkedHashSet类提供了所有可选的集操作,并允许有空元素。
    • LinkedHashSet类是非同步的。
    • LinkedHashSet类维护插入顺序。

    Java LinkedHashSet类的构造函数

    ConstructorDescription
    HashSet()它用于构造一个默认的HashSet。
    HashSet(Collection c)它使用集合c中的元素来初始化散列集。
    LinkedHashSet(int capacity)它用于将链接哈希集的容量初始化为给定的整数值容量。
    LinkedHashSet(int capacity, float fillRatio)它用于根据其参数初始化散列集的容量和填充比例(也称为负载容量)。

    二、LinkedHashSet 类的操作

    在LinkedHashSet类上执行各种操作

    2.1 添加操作

    为了向LinkedHashSet添加元素,可以使用add()方法。这与HashSet不同,因为在HashSet中,插入顺序不保留,而是保留在LinkedHashSet中。

        public static void main(String[] args) {
            // 创建
            LinkedHashSet<String> hs = new LinkedHashSet<String>();
    
            // 添加元素
            // 插入是有序的
            hs.add("深圳");
            hs.add("广州");
            hs.add("东莞");
    
            // 输出
            System.out.println("LinkedHashSet : " + hs);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输出:

    LinkedHashSet : [深圳, 广州, 东莞]
    
    
    • 1
    • 2

    2.2 删除操作

    可以使用remove()方法从LinkedHashSet中删除这些值。

    实例:

        public static void main(String[] args) {
            // 创建
            LinkedHashSet<String> hs = new LinkedHashSet<String>();
    
            // 添加元素
            // 插入是有序的
            hs.add("深圳");
            hs.add("广州");
            hs.add("东莞");
    
            // 输出
            System.out.println("LinkedHashSet : " + hs);
    
    
            // 删除 元素: 深圳
            hs.remove("广州");
            System.out.println("删除后的集合:"+hs);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    输出:

    LinkedHashSet : [深圳, 广州, 东莞]
    删除后的集合:[深圳, 东莞]
    
    • 1
    • 2

    2.3 迭代操作

    使用iterator()方法迭代LinkedHashSet的元素。最著名的方法是使用增强的for循环。

    实例:

        public static void main(String[] args) {
            // 创建
            LinkedHashSet<String> hs = new LinkedHashSet<String>();
    
            // 添加元素
            // 插入是有序的
            hs.add("深圳");
            hs.add("广州");
            hs.add("东莞");
    
            // 输出
            System.out.println("LinkedHashSet : " + hs);
    
    
            // 使用迭代器
            Iterator itr = hs.iterator();
    
            while (itr.hasNext())
                System.out.print(itr.next() + ", ");
    
            // 换行
            System.out.println();
    
            // 使用 for-each
            for (String s : hs)
                System.out.print(s + ", ");
            System.out.println();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    输出:

    LinkedHashSet : [深圳, 广州, 东莞]
    深圳, 广州, 东莞, 
    深圳, 广州, 东莞, 
    
    • 1
    • 2
    • 3

    三、LinkedHashSet 类的API

    在类java.util.AbstractSet中声明的方法

    METHODDESCRIPTION
    equals()用于验证对象与HashSet是否相等并比较它们。只有当两个HashSet都包含相同的元素时,该列表才会返回true,无论顺序如何。
    hashcode()返回此集合的散列代码值。
    removeAll(collection)此方法用于删除集合中存在于集合中的所有元素。如果该集合因调用而发生更改,则此方法返回true。

    在类java.util.AbstractCollection中声明的方法

    METHODDESCRIPTION
    addAll(collection)此方法用于将上述集合中的所有元素追加到现有集合。元素是随机添加的,不遵循任何特定的顺序。
    containsAll(collection)此方法用于检查集合是否包含给定集合中的所有元素。如果集合包含所有元素,则该方法返回true;如果缺少任何元素,则返回false。
    retainAll(collection)此方法用于保留集合中给定集合中提到的所有元素。如果该集合因调用而发生更改,则此方法返回true。
    toArray()此方法用于形成与Set的相同元素的数组。
    toString()Java HashSet的toString()方法用于返回HashSet集合元素的字符串表示形式。

    接口java.util.Collection中声明的方法

    METHODDESCRIPTION
    parallelStream()返回一个可能并行的流,并将此集合作为其源。
    removeIf(Predicate filter)删除此集合中满足给定谓词的所有元素。
    stream()返回一个序列流,并将此集合作为其源。

    在类java.util.HashSet中声明的方法

    METHODDESCRIPTION
    add(E e)用于添加指定的元素,如果该元素不存在,则返回false。
    clear()用于从集合中删除所有元素。
    contains(Object o)用于当元素在set中出现时返回true。
    remove(Object o)用于删除集合中存在的元素。
    iterator()用于返回一个遍历集合中元素的迭代器。
    isEmpty()用于检查集合是否为空。如果为空则返回true,如果set的条件非空则返回false。
    size()用于返回集合的大小。
    clone()用于创建该集合的浅副本。

    接口java.lang.Iterable中声明的方法

    METHODDESCRIPTION
    forEach(Consumer action)对Iterable中的每个元素执行给定的操作,直到所有元素都被处理完或该操作引发异常。
  • 相关阅读:
    PT_二维随机变量:正态分布的可加性
    华为鸿蒙应用--封装通用标题栏:CommonTitleBar(鸿蒙工具)-ArkTs
    Qt 之悬浮球菜单
    好记性不如烂笔头(ubuntu的samba的配置)
    图解LeetCode——854. 相似度为 K 的字符串(难度:困难)
    STC15单片机-看门狗介绍
    爬虫项目(10):白嫖抓第三方网站接口,基于Flask搭建搭建一个AI内容识别平台
    面试经典150题——Day15
    GLTF-pipeline
    vue3+antdv 表格封装
  • 原文地址:https://blog.csdn.net/weixin_44735928/article/details/126196730