Java 中的LinkedHashSet类与HashSet不同,因为其实现维护了所有元素上的双链表。 此链表定义了迭代顺序,即将元素插入到集合中的顺序。 这称为插入顺序。 如果将元素重新插入到集合中,则插入顺序不受其影响。 某些人更喜欢此实现,因为它使用户摆脱了HashSet提供的未指定且混乱的排序。

LinkedHashSet的优点
LinkedHashSet维护元素的插入顺序- 插入,删除和检索操作的时间复杂度为
O(1)(恒定时间)。 LinkedHashSet允许 1 个null元素。LinkedHashSet使用equals()和hashCode(),因此可以删除可能的重复元素。
继承图

LinkedHashSet的继承图
LinkedHashSet中的构造方法
LinkedHashSet():初始化一个新的链接哈希集,默认初始容量为 16,负载因子为 0.75。LinkedHashSet(Collection <? extends E> c):使用与指定集合相同的元素初始化一个新的链接哈希集。LinkedHashSet(int initialCapacity):使用指定的初始容量初始化一个新的链接哈希集。LinkedHashSet(int initialCapacity, float loadFactor):使用指定的容量和负载因子初始化一个新的链接哈希集。
LinkedHashSet中的方法
- 从类
java.util.HashSet继承的方法:add),clear),clone),contains),isEmpty) ,iterator),remove),size) - 从类
java.util.AbstractSet继承的方法:equals),hashCode) ,removeAll) - 从类
java.util.AbstractCollection继承的方法:addAll) ,containsAll) ,keepAll) ,toArray) ,toArray(T[])) ,toString) - 从类
java.lang.Object继承的方法:finalize),getClass) ,notify),notifyAll) ,wait) ,wait(long)),wait(long, int)) - 从接口
java.util.Set继承的方法:add) ,addAll) ,clear),contains),containsAll) ,equals),hashCode) ,isEmpty) ,iterator),remove),removeAll) ,retainAll) ,size),toArray) ,toArray(T[]))
有关所有方法的文档,请访问 Oracle 官方文档页面。
使用Iterator()迭代LinkedHashSet
import java.util.*;class LinkedHashSetExample{public static void main(String args[]){LinkedHashSet<String> animals=new LinkedHashSet();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");Iterator<String> iterator=animals.iterator();while(iterator.hasNext()) {System.out.println(iterator.next());}}}
输出:
ElephantTigerLion
使用For循环遍历LinkedHashSet
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>();for (int i = 0; i < linkedHashSet.size(); i++) {System.out.println(linkedHashSet.get(i));}
使用增强For循环遍历LinkedHashSet
for (String temp : linkedHashSet) {System.out.println(temp);}
使用While循环遍历LinkedHashSet
int i = 0;while (i < linkedHashSet.size()) {System.out.println(linkedHashSet.get(i));i++;}
LinkedHashSet的示例程序
import java.util.LinkedHashSet;public class LinkedHashSetExample{public static void main(String[] args){LinkedHashSet<String> coins =new LinkedHashSet<String>();// Adding element to LinkedHashSetcoins.add("5");coins.add("10");coins.add("20");coins.add("50");coins.add("100");// Adding a duplicate would result in no addition of the elementcoins.add("5");// Adding another coin valuecoins.add("75");System.out.println("Size of the list = " +coins.size());System.out.println("Original LinkedHashSet:" + coins);System.out.println("Removing 75 from LinkedHashSet: " +coins.remove("75"));System.out.println("Checking if 50 is present=" +coins.contains("50"));System.out.println("Updated LinkedHashSet: " + coins);}}
输出:
Size of LinkedHashSet=5Original LinkedHashSet:[5, 10, 20, 50, 75, 100]Removing 75 from LinkedHashSet: trueChecking if 50 is present=trueUpdated LinkedHashSet:[5, 10, 20, 50, 100]
