Java集合学习(七)——深入理解LinkedHashSet类

这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

前言

 大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
复制代码

在读本篇之前希望读者先了解HashSet类,这样对与LinkedHashSet类的学习会更加容易。可以参考以下链接:

Java集合学习(六)——深入理解HashSet类

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

 本文主要介绍Java集合的LinkedHashSet类的基本特点和常用的方法。
复制代码

1. LinkedHashSet类

1.1 什么是LinkedHashSet类

LinkedHashSet继承了HashSet。与HashMap有所不同的是它底层使用LinkedHashMap来实现,即在HashMap的基础上新增加了一个双向链表来确保迭代有序(迭代的元素顺序和插入的元素顺序相同)。因此性能略低于HashSet,但是迭代访问元素时将具有很好的性能,因为它的内部是以链表来实现。

允许存放null元素,此实现不是同步的。

1.2 LinkedHashSet类的构造方法

LinkedHashSet有四个构造方法,如下:

LinkedHashSet() 构造一个带默认初始容量 (16) 和加载因子 (0.75) 的新空链接哈希 set。
LinkedHashSet(Collection c) 构造一个与指定 collection 中的元素相同的新链接哈希 set。
LinkedHashSet(int initialCapacity) 构造一个带指定初始容量和默认加载因子 (0.75) 的新空链接哈希 set。
LinkedHashSet(int initialCapacity, float loadFactor) 构造一个带有指定初始容量和加载因子的新空链接哈希 set。

实例展示:

public class LinkedHashSetTest {
    public static void main(String[] args) {
        LinkedHashSet linkedHashSet = new LinkedHashSet<>();
        ArrayList arrayList = new ArrayList<String>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        LinkedHashSet linkedHashSet1 = new LinkedHashSet<>(arrayList);
        LinkedHashSet linkedHashSet2 = new LinkedHashSet<>(32);
        LinkedHashSet linkedHashSet3 = new LinkedHashSet<>(32,0.8f);
        linkedHashSet2.add(1);
        linkedHashSet2.add(3);
        linkedHashSet2.add(2);
        linkedHashSet2.add(0);
        Iterator iterator = linkedHashSet2.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }
        
    }
}
复制代码

image-20211129195100037

可以看到,输出元素的顺序和插入元素的顺序是一致的,这是LinkedHashSet类的一大特点。

1.3 LinkedHashSet类的普通方法

LinkedHashSet并没有自己独有的方法,LinkedHashSet的方法都是从父类HashSet继承和实现Set接口和Object类而来,这里就不再赘诉。

小结

以上就是LinkedHashSet类的一些介绍,到此我们已经把Set集合中的一些常用类学完了,接下来我们继续来学习Collection集合中的List集合。以上内容希望对读者有所帮助,如有不足之处,欢迎留言指正。

猜你喜欢

转载自juejin.im/post/7035961007935750180
今日推荐