Java中HashSet和LinkedHashSet之间的区别

HashSet和LinkedHashSet

  • 此类在java.util包中可用。

  • 这是Set接口的实现类。

  • HashSet类是LinkedHashSet类的父级。

  • 实现HashSet的基础数据结构是Hashtable。

  • 在HashSet插入中,不保留顺序,这意味着元素的插入顺序不需要与元素的检索顺序相同。

  • 此HashSet类在Java 1.2的早期版本中引入。

  • 如果元素的插入顺序不重要,则应使用HashSet。

示例

假设我们有一个包含少量元素的HashSet。在这里,我们以[10,20,30,50,null]的顺序添加元素,如果我们正在检索元素,则检索元素的顺序可以不同(即,不需要相同的插入和检索)元素的顺序)。因此输出将不同,顺序将类似于[null.50,20,10,30]。

//Java程序演示HashSet的行为

import java.util.*;

class HashSetClass {
    public static void main(String[] args) {
        //创建HashSet的实例
        HashSet hs = new HashSet();

        //通过使用add()方法将元素添加到HashSet-
        hs.add(10);
        hs.add(20);
        hs.add(30);
        hs.add(50);
        hs.add(null);

        //显示HashSet元素
        System.out.println("Retrieval order of the elements in HashSet is :" + hs);
    }
}

输出结果

E:\Programs>javac HashSetClass.java

E:\Programs>java HashSetClass
Retrieval order of the elements in HashSet is :[null, 50, 20, 10, 30]

LinkedHashSet

  • 此类在java.util包中可用。

  • 这是Set接口的实现类。

  • LinkedHashSet类是HashSet类的子级。

  • 实现LinkedHashSet的基础数据结构是Hashtable和LinkedList的组合。

  • 在LinkedHashSet中,保留插入顺序,这意味着元素的插入顺序必须与元素的检索顺序相同。

  • 在Java 1.4的早期版本中引入了LinkedHashSet类。

  • 如果元素的插入顺序很重要,则应使用LinkedHashSet。

示例

假设我们有一个包含少量元素的LinkedHashSet。在这里,我们以[10,20,30,50,null]的顺序添加元素,如果我们要检索元素,则检索元素的顺序必须相同(即,其插入和检索顺序必须相同)。元素。)因此输出将相同,并且顺序将类似于[10,20,30,50,null]。

//Java程序演示LinkedHashSet的行为

import java.util.*;

class LinkedHashSetClass {
    public static void main(String[] args) {
        //创建LinkedHashSet的实例
        LinkedHashSet lhs = new LinkedHashSet();

        //通过使用add()方法将元素添加到LinkedHashSet-
        lhs.add(10);
        lhs.add(20);
        lhs.add(30);
        lhs.add(50);
        lhs.add(null);

        //显示LinkedHashSet元素
        System.out.println("Retrieval order of the elements in LinkedHashSet is :" + lhs);
    }
}

输出结果

E:\Programs>javac LinkedHashSetClass.java

E:\Programs>java LinkedHashSetClass
Retrieval order of the elements in LinkedHashSet is :[10, 20, 30, 50, null]