linkedhashmap遍历
时间: 2023-08-31 08:39:07 浏览: 52
### 回答1:
LinkedHashMap是一种有序的HashMap,遍历LinkedHashMap可以按照插入顺序或者访问顺序进行遍历。
按照插入顺序遍历LinkedHashMap,可以使用以下代码:
```java
LinkedHashMap<Integer, String> map = new LinkedHashMap<>();
map.put(1, "value1");
map.put(2, "value2");
map.put(3, "value3");
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
```
按照访问顺序遍历LinkedHashMap,需要在创建LinkedHashMap时设置accessOrder参数为true,然后通过访问元素来改变顺序。以下是示例代码:
```java
LinkedHashMap<Integer, String> map = new LinkedHashMap<>(16, 0.75f, true);
map.put(1, "value1");
map.put(2, "value2");
map.put(3, "value3");
map.get(2); // 访问元素2,修改访问顺序
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
```
这个代码中,我们创建了一个accessOrder为true的LinkedHashMap,并且访问了元素2以改变访问顺序。然后我们使用entrySet方法遍历map,输出结果为:
```
1 = value1
3 = value3
2 = value2
```
可以看到,按照访问顺序遍历LinkedHashMap时,元素2被放到了最后面。
### 回答2:
LinkedHashMap 是 Java 中的一种特殊的哈希表数据结构,它继承自 HashMap 类,但拥有更强的有序性。在 LinkedHashMap 中,元素的顺序是按照它们被插入的顺序保留的。因此,我们可以通过迭代 LinkedHashMap 来按照插入顺序或访问顺序遍历其中的元素。
在 Java 中,可以通过以下方式来遍历 LinkedHashMap:
1. 使用 for-each 循环遍历键集:
```java
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key + ": " + value);
}
```
在上述代码中,我们首先创建了一个 LinkedHashMap 对象,并添加了几个键值对。然后,通过遍历键集来访问每个键值对。通过调用 `map.keySet()` 可以获取 LinkedHashMap 对象中键的集合,然后通过 `map.get(key)` 来获取对应键的值。
2. 使用迭代器遍历键集:
```java
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
Integer value = map.get(key);
System.out.println(key + ": " + value);
}
```
这里我们通过 `map.keySet().iterator()` 来获取键集的迭代器,然后使用 `iterator.hasNext()` 判断是否还有下一个元素,并通过 `iterator.next()` 来获取下一个元素。
无论是使用 for-each 循环还是迭代器,都可以从 LinkedHashMap 中按照插入顺序依次获取键值对进行遍历。这是 LinkedHashMap 相对于 HashMap 的一个优势,可以保留元素的插入顺序。