Java LinkedHashMap
Java LinkedHashMap
LinkedHashMap 存储键和值,并保持它们与您输入的顺序一致。
它是 java.util 包的一部分,并实现了 Map 接口。
提示: 如果您需要可预测的迭代顺序(插入顺序),请使用 LinkedHashMap。
创建 LinkedHashMap
创建一个名为 capitalCities 的 LinkedHashMap 对象,用于存储 String 键和 String 值:
示例
import java.util.LinkedHashMap; // Import the LinkedHashMap class
LinkedHashMap<String, String> capitalCities = new LinkedHashMap<>();
现在您可以使用诸如put()之类的方法来添加键值对,使用get()按键检索值,以及使用remove()方法来删除条目——所有这些操作都会保持插入顺序。
添加项
使用 put() 方法向 LinkedHashMap 添加项:
示例
// Import the LinkedHashMap class
import java.util.LinkedHashMap;
public class Main {
public static void main(String[] args) {
LinkedHashMap<String, String> capitalCities = new LinkedHashMap<>();
capitalCities.put("England", "London");
capitalCities.put("India", "New Dehli");
capitalCities.put("Austria", "Wien");
capitalCities.put("Norway", "Oslo");
capitalCities.put("Norway", "Oslo"); // Duplicate
capitalCities.put("USA", "Washington DC");
System.out.println(capitalCities);
}
}
输出: 项目将按添加顺序显示(例如,{England=London, India=New Delhi, Austria=Wien, Norway=Oslo, USA=Washington DC})。
注意: 重复项(例如"Norway")将被忽略。
访问项目
使用 get() 并传入键值来获取其关联的值:
删除项目
使用 remove() 按键删除项目:
使用 clear() 删除所有项目:
LinkedHashMap 大小
使用 size() 来检查映射中键值对的数量:
注意:大小仅统计唯一键的数量。如果一个键被多次添加,则只保留最后一次添加的值。
遍历 LinkedHashMap
您可以使用 for-each 循环遍历 LinkedHashMap。使用方法:
keySet()获取所有键values()获取所有值
示例
// 打印 keys 和 values
for (String key : capitalCities.keySet()) {
System.out.println("Key: " + key + ", Value: " + capitalCities.get(key));
}
HashMap 与 LinkedHashMap
| 特性 | HashMap |
LinkedHashMap |
顺序 | 不保证顺序 | 插入顺序保留 | 性能 | 随机访问速度更快 | 由于顺序问题,速度略慢 | 重复项 | 键必须唯一 | 键必须唯一 |
|---|
提示: 如果您希望映射记住条目的添加顺序,请使用 LinkedHashMap。
var 关键字
从 Java 10 开始,您可以使用 var 关键字声明一个 LinkedHashMap 变量,而无需重复编写类型。编译器会根据您赋值的值推断出类型。
这使得代码更简洁,但许多开发者为了代码清晰仍然使用完整的类型。由于 var 是有效的 Java 关键字,您可能会在其他代码中看到它,因此了解它的存在很有帮助:
示例
// Without var
LinkedHashMap<String, String> capitalCities = new LinkedHashMap<String, String>();
// With var
var capitalCities = new LinkedHashMap<String, String>();
映射接口
注意: 有时您会在 Java 代码中同时看到 Map 和 LinkedHashMap,例如:
import java.util.Map;
import java.util.LinkedHashMap;
Map<String, String> capitalCities = new LinkedHashMap<>();
这意味着变量 (capitalCities) 被声明为 Map(接口),但它存储的是一个 LinkedHashMap 对象(实际的映射)。由于 LinkedHashMap 实现了 Map 接口,因此这是可行的。
虽然工作方式相同,但有些开发者更喜欢这种方式,因为它让他们以后可以更灵活地更改类型。

