CodeGym /Java 博客 /随机的 /Java中的LinkedHashMap
John Squirrels
第 41 级
San Francisco

Java中的LinkedHashMap

已在 随机的 群组中发布

Java中的LinkedHashMap是什么?

Collections框架的LinkedHashMap类是Map接口HashtableLinkedList实现。它将其条目存储在哈希表中,并在内部使用双向链表来维护插入顺序。此 LinkedList 定义插入顺序,即键插入到Map中的顺序。HashMap提供了快速插入搜索删除的优点,但在LinkedHashMap中LinkedList的实现也维护了插入顺序。 Java 中的 LinkedHashMap - 1

LinkedHashMap的特点

  1. 它包含基于键的值。
  2. 它包含独特的元素。
  3. 它可能有一个空键和多个空值。
  4. 它是非同步的。
  5. 它维护插入顺序,这会导致迭代成本更高。

性能因素

LinkedHashMap的性能主要取决于下面描述的两个因素。

容量

容量是指它可以存储的条目数。如果不指定参数,默认容量为16 。负载因子 负载因子意味着每当HashMap填充到作为参数提供的特定百分比时,就会创建一个大小加倍的新 HashMap,并且所有条目都将移动到这个新 HashMap。HashMap 的默认负载因子是0.75。它也称为填充率

LinkedHashMap的声明

要创建LinkedHashMap,首先我们需要导入包,即java.util.LinkedHashMap
LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
这里, Key是映射中键的类型。 Value是映射中映射值的类型。 12是容量,这意味着它将在地图中存储12个条目。 0.5f是负载因子,这意味着当填充 50% 时,它将创建一个新的Map并将所有值移至这个新的 Map 中。

LinkedHashMap常用方法

这里列出了LinkedHashMap的一些常用方法。
方法 描述
清除() 删除地图中的所有映射。
containsValue(对象值) 如果映射将键映射到指定值,则返回 true。
条目集() 返回地图中映射的设置视图。
获取(对象键) 返回指定键的值,如果未指定键,则返回 null。
键集() 返回地图中键的设置视图。
值() 返回地图中值的集合视图。
getOrDefault(对象键, V defaultValue) 返回与指定键关联的值;如果没有关联键,则返回 defaultValue。

LinkedHasMap 示例

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {
        // Creating a LinkedHashMap of odd numbers
        LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
        // Using the put() method
        oddNumbers.put("One", 1);
        oddNumbers.put("Three", 3);
        System.out.println("LinkedHashMap1: " + oddNumbers);

        // Creating another LinkedHashMap
        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
        numbers.put("Two", 2);
        // Using putAll() method
        numbers.putAll(oddNumbers);
        System.out.println("LinkedHashMap2: " + numbers);

        // Using entrySet() method
        System.out.println("Key/Value mappings: " + numbers.entrySet());

        // Using keySet() method
        System.out.println("Keys: " + numbers.keySet());

        // Using values() method
        System.out.println("Values: " + numbers.values());

        // Using get() method
        int value1 = numbers.get("Three");
        System.out.println("Returned Number: " + value1);

        // Using getOrDefault() method
        int value2 = numbers.getOrDefault("Five", 5);
        System.out.println("Returned Number: " + value2);

        // Using remove() method
        int value = numbers.remove("Two");
        System.out.println("Removed value: " + value);

        // Using entrySet() method
        System.out.println("Key/Value mappings: " + numbers.entrySet());
    }
}

输出

LinkedHashMap1: {One=1, Three=3} LinkedHashMap2: {Two=2, One=1, Three=3} 键/值映射:[Two=2, One=1, Three=3] 键:[Two, One ,三] 值:[2, 1, 3] 返回的数量:3 返回的数量:5 删除的值:2 键/值映射:[一=1,三=3]

LinkedHashMap 与 HashMap

让我们看看它们之间的一些区别,尽管它们都实现了Map接口。
  1. LinkedHashMap在内部实现双向链表时维护插入顺序。
  2. LinkedHashMap需要更多的存储空间,因为它实现了LinkedList
  3. 在性能方面,LinkedHashMap比HashMap慢。

结论

我们希望您了解Java 中的LinkedHashMap类、它的不同方法及其实现。请随意练习,并在需要更多帮助时返回。快乐学习!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION