Java HashSet集合的子类LinkedHashSet集合

说明

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

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

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

举例

HashSet集合例子1

1import java.util.HashSet; 2 3public class DemoLinkedHashSet { 4 public static void main(String[] args) { 5 HashSet<String> hashSet = new HashSet<>(); 6 7 hashSet.add("https"); 8 hashSet.add("www"); 9 hashSet.add("cnblogs"); 10 hashSet.add("com"); 11 System.out.println(hashSet); 12 } 13} 14 15输出结果: 16[com, cnblogs, www, https]

HashSet集合例子2

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

1import java.util.HashSet; 2 3public class DemoLinkedHashSet { 4 public static void main(String[] args) { 5 HashSet<String> hashSet = new HashSet<>(); 6 7 hashSet.add("cnblogs"); 8 hashSet.add("com"); 9 hashSet.add("https"); 10 hashSet.add("www"); 11 System.out.println(hashSet); 12 } 13} 14 15输出结果: 16[com, cnblogs, www, https]

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

LinkedHashSet集合例子1

1import java.util.LinkedHashSet; 2 3public class DemoLinkedHashSet { 4 public static void main(String[] args) { 5 LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); 6 7 linkedHashSet.add("https"); 8 linkedHashSet.add("www"); 9 linkedHashSet.add("cnblogs"); 10 linkedHashSet.add("com"); 11 System.out.println(linkedHashSet); 12 } 13} 14 15输出结果: 16[https, www, cnblogs, com]

LinkedHashSet集合例子2

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

1import java.util.LinkedHashSet; 2 3public class DemoLinkedHashSet02 { 4 public static void main(String[] args) { 5 LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); 6 7 linkedHashSet.add("cnblogs"); 8 linkedHashSet.add("com"); 9 linkedHashSet.add("https"); 10 linkedHashSet.add("www"); 11 System.out.println(linkedHashSet); 12 } 13} 14 15输出结果: 16[cnblogs, com, https, www]

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

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

查找算法

顺序查找顺序查找又称为线性查找,对线性表和链表都适用。线性表可以通过数组下标递增来顺序扫描每个元素,链表可以通过next指针依次扫描每一个元素。:::tip指针实现顺序表时,顺序表中是指针时,在定义顺序表的结构体后,需要对顺序表初始化,初始化时为指针申请堆

java语言基础6

hashmap的数据结构,HashMap的数据结构是数组链表红黑树(红黑树sinceJDK1.8)。我们常把数组中的每一个节点称为一个桶。当向桶中添加一个键值对时,首先计算键值对中key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这种现象称为碰撞,这时按照尾插法(jdk1.7及以前为头插法)的方式添

JS 实现单链表

要存储多个元素,数组(或列表)可能是最常用的数据结构。但这种数据结构有一个缺点:(在大多数语言中)数据的大小是固定的,从数组的起点或中间插入或移除项的成本很高。  链表存储有序的集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。  相对于传统的数组,链表的一个好处是

Java中常见数据结构:List与Map

1:集合Collection(单列集合)List(有序,可重复)ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList底层数据结构是链表,查询慢,增删快线程不安全,效率高Set(无序,唯一)HashSet底层数据结构是哈希表(实际上是

Java 之 HashMap 集合

一、HashMap概述java.util.HashMap<k,v集合implementsMap<k,v接口HashMap集合的特点:1、HashMap集合底层是哈希表:查询速度特别的快JDK1.8之前:数组单向链表JDK1.8之后:数组单向链表|红黑树(