如何保留Java HashSet 元素的插入顺序?
当元素由于散列而从 HashSet 中获取时,它们插入的顺序在检索时不会得到维护。 HashSet 使用称为散列的机制存储元素。我们可以使用 LinkedHashSet 来实现给定的任务。 LinkedHashSet 类实现了一个双向链表,以便它可以遍历所有元素。
例子:
Input : HashSetInput = {c, a, b}
Output: HashSetPrint = {c, a, b}
Input : HashSetInput = {"first", "second"}
Output: HashSetPrint = {"first", "second"}
使用 HashSet 实现:(不维护顺序)
句法:
HashSet num = new HashSet();
方法:
- 创建 HashSet 对象。
- 在 HashSet 中插入多个元素。
- 打印 HashSet。(不维护顺序)
下面是上述方法的实现:
Java
// Preserve insertion order of Java HashSet elements
// Order not maintained because HashSet used
import java.util.HashSet;
import java.util.Set;
public class PreserveHashSetOrderExample {
public static void main(String[] args)
{
Set hSetNumbers = new HashSet();
hSetNumbers.add(1);
hSetNumbers.add(13);
hSetNumbers.add(2);
hSetNumbers.add(4);
for (Integer number : hSetNumbers) {
System.out.println(number);
}
}
}
Java
// Preserve insertion order of Java HashSet elements
// Using LinkedHashSet
import java.util.LinkedHashSet;
import java.util.Set;
public class PreserveHashSetOrderExample {
public static void main(String[] args)
{
Set setNumbers
= new LinkedHashSet();
setNumbers.add(1);
setNumbers.add(13);
setNumbers.add(2);
setNumbers.add(4);
for (Integer number : setNumbers) {
System.out.println(number);
}
}
}
输出
1
2
4
13
使用 LinkedHashSet 实现:(维护顺序)
句法:
HashSet num = new LinkedHashSet();
方法:
- 创建一个 HashSet 对象并使用 LinkedHashSet 的构造函数对其进行初始化。
- 在 HashSet 中插入多个元素。
- 打印 HashSet。(保持顺序)
下面是上述方法的实现:
Java
// Preserve insertion order of Java HashSet elements
// Using LinkedHashSet
import java.util.LinkedHashSet;
import java.util.Set;
public class PreserveHashSetOrderExample {
public static void main(String[] args)
{
Set setNumbers
= new LinkedHashSet();
setNumbers.add(1);
setNumbers.add(13);
setNumbers.add(2);
setNumbers.add(4);
for (Integer number : setNumbers) {
System.out.println(number);
}
}
}
输出
1
13
2
4