# Java 中的`LinkedHashMap`

> 原文： [https://beginnersbook.com/2013/12/linkedhashmap-in-java/](https://beginnersbook.com/2013/12/linkedhashmap-in-java/)

[`LinkedHashMap`](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html) 是`Map`接口的哈希表和链表实现，具有可预测的迭代顺序。此实现与`HashMap`的不同之处在于它维护了一个贯穿其所有条目的双向链表。此链表定义迭代排序，通常是键插入映射的顺序（插入顺序）。在最后几篇教程中，我们讨论了[`HashMap`](https://beginnersbook.com/2013/12/hashmap-in-java-with-example/)和[`TreeMap`](https://beginnersbook.com/2013/12/treemap-in-java-with-example/)。这个类与它们不同：

*   `HashMap`没有维持任何顺序。
*   `TreeMap`按键的升序对条目进行排序。
*   `LinkedHashMap`保持插入顺序。

让我们借助一个例子来理解`LinkedHashMap`：

```java
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
public class LinkedHashMapDemo {
    public static void main(String args[]) {
         // HashMap Declaration
         LinkedHashMap<Integer, String> lhmap = 
                 new LinkedHashMap<Integer, String>();

         //Adding elements to LinkedHashMap
         lhmap.put(22, "Abey");
         lhmap.put(33, "Dawn");
         lhmap.put(1, "Sherry");
         lhmap.put(2, "Karon");
         lhmap.put(100, "Jim");

         // Generating a Set of entries
         Set set = lhmap.entrySet();

         // Displaying elements of LinkedHashMap
         Iterator iterator = set.iterator();
         while(iterator.hasNext()) {
            Map.Entry me = (Map.Entry)iterator.next();
            System.out.print("Key is: "+ me.getKey() + 
                    "& Value is: "+me.getValue()+"\n");
         }
    }
}
```

**输出：**

```java
Key is: 22& Value is: Abey
Key is: 33& Value is: Dawn
Key is: 1& Value is: Sherry
Key is: 2& Value is: Karon
Key is: 100& Value is: Jim
```

如您所见，值的返回顺序与插入的顺序相同。