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

一、LinkedHashSet 类的介绍

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

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

LinkedHashSet类声明:

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

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);
    }

输出:

LinkedHashSet : [深圳, 广州, 东莞]

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);
    }

输出:

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

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();
    }

输出:

LinkedHashSet : [深圳, 广州, 东莞]
深圳, 广州, 东莞, 
深圳, 广州, 东莞, 

三、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<? super E> 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中的每个元素执行给定的操作,直到所有元素都被处理完或该操作引发异常。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值