📜  Java的LinkedHashMap 和 LinkedHashSet(1)

📅  最后修改于: 2023-12-03 14:43:02.607000             🧑  作者: Mango

Java的LinkedHashMap和LinkedHashSet

介绍

在Java中,LinkedHashMapLinkedHashSet是两个与哈希表相关的数据结构。它们是对HashMapHashSet的扩展,提供了添加顺序的保持。

LinkedHashMap继承自HashMap,使用一个双向链表将元素按照插入顺序连接起来。LinkedHashSet继承自HashSet,内部使用LinkedHashMap来保持元素的插入顺序。

LinkedHashMap
特点
  • 保持了插入顺序
  • 允许插入空键和空值
  • 允许存在重复的值
使用方法
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("apple", 1);
linkedHashMap.put("banana", 2);
linkedHashMap.put("orange", 3);

System.out.println(linkedHashMap); // 输出:{apple=1, banana=2, orange=3}
遍历顺序

遍历LinkedHashMap的元素时,会按照插入的顺序进行遍历。可以使用entrySet()方法获取键值对的集合,也可以使用keySet()values()方法获取键或值的集合。

for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

// 输出:
// apple: 1
// banana: 2
// orange: 3
LinkedHashSet
特点
  • 保持了插入顺序
  • 不允许插入重复的元素
  • 允许插入一个空元素
使用方法
Set<Integer> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add(1);
linkedHashSet.add(2);
linkedHashSet.add(3);

System.out.println(linkedHashSet); // 输出:[1, 2, 3]
遍历顺序

遍历LinkedHashSet的元素时,会按照插入的顺序进行遍历。可以使用迭代器或循环来遍历。

Iterator<Integer> iterator = linkedHashSet.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

// 输出:
// 1
// 2
// 3
总结

LinkedHashMapLinkedHashSet是带有保持插入顺序特性的哈希表数据结构。在需要按照插入顺序遍历元素时,它们非常有用。着重考虑元素顺序的应用场景中,可选择使用LinkedHashMapLinkedHashSet