Java中HashSet和LinkedHashSet之间的区别
HashSet和LinkedHashSet
此类在java.util包中可用。
这是Set接口的实现类。
HashSet类是LinkedHashSet类的父级。
实现HashSet的基础数据结构是Hashtable。
在HashSet插入中,不保留顺序,这意味着元素的插入顺序不需要与元素的检索顺序相同。
此HashSet类在Java1.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中,保留插入顺序,这意味着元素的插入顺序必须与元素的检索顺序相同。
在Java1.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]