Java HashSet集合的子类LinkedHashSet集合

Wesley13
• 阅读 648

说明

HashSet保证元素的唯一性,可是元素存放进去是没有顺序的。

在HashSet下面有一个子类java.util.LinkedHashSet,它是 链表 + 哈希表(数组+链表 或者 数组+红黑树)组合的一个数据结构。

即相对HashSet而言,多了一个链表结构。多了的那条链表,用来记录元素的存储顺序,保证元素有序

举例

HashSet集合例子1

import java.util.HashSet;

public class DemoLinkedHashSet {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();

        hashSet.add("https");
        hashSet.add("www");
        hashSet.add("cnblogs");
        hashSet.add("com");
        System.out.println(hashSet);
    }
}

输出结果:
[com, cnblogs, www, https]

HashSet集合例子2

将例子1中添加元素的顺序调换一下

import java.util.HashSet;

public class DemoLinkedHashSet {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();

        hashSet.add("cnblogs");
        hashSet.add("com");
        hashSet.add("https");
        hashSet.add("www");
        System.out.println(hashSet);
    }
}

输出结果:
[com, cnblogs, www, https]

可以看出,HashSet集合存储的元素是无序的。

LinkedHashSet集合例子1

import java.util.LinkedHashSet;

public class DemoLinkedHashSet {
    public static void main(String[] args) {
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();

        linkedHashSet.add("https");
        linkedHashSet.add("www");
        linkedHashSet.add("cnblogs");
        linkedHashSet.add("com");
        System.out.println(linkedHashSet);
    }
}

输出结果:
[https, www, cnblogs, com]

LinkedHashSet集合例子2

将例子1中添加元素的顺序调换一下

import java.util.LinkedHashSet;

public class DemoLinkedHashSet02 {
    public static void main(String[] args) {
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();

        linkedHashSet.add("cnblogs");
        linkedHashSet.add("com");
        linkedHashSet.add("https");
        linkedHashSet.add("www");
        System.out.println(linkedHashSet);
    }
}

输出结果:
[cnblogs, com, https, www]

可以看出,LinkedHashSet集合存储的元素是有序的。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java语言基础6
hashmap的数据结构,HashMap的数据结构是数组链表红黑树(红黑树sinceJDK1.8)。我们常把数组中的每一个节点称为一个桶。当向桶中添加一个键值对时,首先计算键值对中key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这种现象称为碰撞,这时按照尾插法(jdk1.7及以前为头插法)的方式添
Souleigh ✨ Souleigh ✨
3年前
JS 实现单链表
要存储多个元素,数组(或列表)可能是最常用的数据结构。但这种数据结构有一个缺点:(在大多数语言中)数据的大小是固定的,从数组的起点或中间插入或移除项的成本很高。  链表存储有序的集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。  相对于传统的数组,链表的一个好处是
似梦清欢 似梦清欢
1年前
查找算法
顺序查找顺序查找又称为线性查找,对线性表和链表都适用。线性表可以通过数组下标递增来顺序扫描每个元素,链表可以通过next指针依次扫描每一个元素。:::tip指针实现顺序表时,顺序表中是指针时,在定义顺序表的结构体后,需要对顺序表初始化,初始化时为指针申请堆
Wesley13 Wesley13
2年前
Java中常见数据结构:List与Map
1:集合Collection(单列集合)List(有序,可重复)ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList底层数据结构是链表,查询慢,增删快线程不安全,效率高Set(无序,唯一)HashSet底层数据结构是哈希表(实际上是
Wesley13 Wesley13
2年前
Java 中常见的数据结构
1、数据结构有什么作用?当使用Java里面的容器类时,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类的。很好使用,这就是数据结构的用处,只不过你在不知不觉中使用了。数据结构内容比较多,细细的讲解也是相对费功夫的,不可能达到一蹴而就。我就将常见的数据结构:堆栈、队列、数组、链表和红黑树给大家介绍一下,作
Wesley13 Wesley13
2年前
Java 之 HashMap 集合
一、HashMap概述java.util.HashMap<k,v集合implementsMap<k,v接口HashMap集合的特点:1、HashMap集合底层是哈希表:查询速度特别的快JDK1.8之前:数组单向链表JDK1.8之后:数组单向链表|红黑树(
Wesley13 Wesley13
2年前
Java 集合系列
HashSet介绍HashSet是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用null元素。HashSet是非同步的。如果多个线程同时访问一个哈希set,而其中至少一个线程修改了该set,那么它必须保持外部同步。HashSet数据结构java.lang
Wesley13 Wesley13
2年前
JavaSE_坚持读源码_HashSet对象_Java1.7
对于HashSet而言,它是基于HashMap实现的,HashSet底层采用HashMap来保存所有元素,因此HashSet的实现比较简单,查看HashSet的源代码,可以看到如下代码:1packagejava.util;23publicclassHashSet<E
Wesley13 Wesley13
2年前
D1
1\.数据结构  1.1线性结构  (1)最常用的数据结构,特点是数据元素之间存在一对一的线性关系  (2)有两种不同的存储结构,即顺序存储结构和链式存储结构    顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的    链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
菜园前端 菜园前端
11个月前
什么是链表?
原文链接:什么是链表?链表是有序的数据结构,链表中的每个部分称为节点。可以首、尾、中间进行数据存取,链表的元素在内存中不必是连续的空间,每个节点通过next指针指向下一个节点。优点链表的添加和删除不会导致其余元素位移。缺点无法根据索引快速定位元素。数组和链