Java LinkedHashSet
Java LinkedHashSet
LinkedHashSet 是一个存储唯一元素并记住添加顺序的集合。
它是java.util包的一部分,并实现了Set接口。
提示: 如果您需要一个不允许重复元素且保留原始插入顺序的集合,请使用 LinkedHashSet。
创建 LinkedHashSet
示例
创建一个名为 cars 的 LinkedHashSet 对象,用于存储字符串:
import java.util.LinkedHashSet; // 导入 LinkedHashSet 类
LinkedHashSet<String> cars = new LinkedHashSet<>();
现在您可以使用诸如add()、contains()和remove()之类的方法来管理您的集合。
添加元素
要向 LinkedHashSet 添加元素,请使用 add() 方法:
示例
import java.util.LinkedHashSet;
public class Main {
public static void main(String[] args) {
LinkedHashSet<String> cars = new LinkedHashSet<>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("BMW"); // Duplicate
cars.add("Mazda");
System.out.println(cars);
}
}
输出:元素将按添加顺序显示(例如,[Volvo, BMW, Ford, Mazda])。
注意:重复项(例如"BMW")将被忽略。
检查元素是否存在
使用 contains() 检查元素是否存在:
移除元素
使用 remove() 移除元素:
移除所有元素
使用 clear() 移除所有元素:
LinkedHashSet 的大小
使用 size() 来计算集合中唯一元素的数量:
注意:重复值不计入大小,只有唯一元素才计入。
遍历 LinkedHashSet
使用 for-each 循环遍历 LinkedHashSet 的元素:
示例
LinkedHashSet<String> cars = new LinkedHashSet<>();
// Add elements...
for (String car : cars) {
System.out.println(car);
}
HashSet 与 LinkedHashSet
| 特性 | HashSet |
LinkedHashSet |
顺序 | 不保证顺序 | 保留插入顺序 | 重复项 | 不允许 | 不允许 | 性能 | 更快 | 稍慢(由于顺序跟踪) |
|---|
提示: 如果您只关心唯一性和速度,请使用HashSet。当顺序很重要时,请使用LinkedHashSet。
var 关键字
从 Java 10 开始,您可以使用 var 关键字声明一个 LinkedHashSet 变量,而无需重复编写类型。编译器会根据您赋值的值推断出类型。
这使得代码更简洁,但许多开发者为了代码清晰仍然使用完整的类型。由于 var 是有效的 Java 关键字,您可能会在其他代码中看到它,因此了解它的存在很有帮助:
示例
// Without var
LinkedHashSet<String> cars = new LinkedHashSet<String>();
// With var
var cars = new LinkedHashSet<String>();
Set 接口
注意: 有时您会在 Java 代码中同时看到 Set 和 LinkedHashSet,例如:
import java.util.Set;
import java.util.LinkedHashSet;
Set<String> cars = new LinkedHashSet<>();
这意味着变量 (cars) 被声明为 Set(接口),但它存储的是一个 LinkedHashSet 对象(实际的集合)。由于 LinkedHashSet 实现了 Set 接口,因此这是可行的。
虽然工作方式相同,但有些开发者更喜欢这种方式,因为它让他们以后可以更灵活地更改类型。

