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());
}
}
}
输出:
Elephant
Tiger
Lion
使用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 LinkedHashSet
coins.add("5");
coins.add("10");
coins.add("20");
coins.add("50");
coins.add("100");
// Adding a duplicate would result in no addition of the element
coins.add("5");
// Adding another coin value
coins.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=5
Original LinkedHashSet:[5, 10, 20, 50, 75, 100]
Removing 75 from LinkedHashSet: true
Checking if 50 is present=true
Updated LinkedHashSet:[5, 10, 20, 50, 100]