JAVA提高教程(14)-认识Map之LinkedHashMap

Java基础及提高教程目录

Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)

此实现可以让客户避免未指定的、由 HashMap(及 Hashtable)所提供的通常为杂乱无章的排序工作,同时无需增加与 TreeMap 相关的成本。使用它可以生成一个与原来顺序相同的映射副本,而与原映射的实现无关:

1.package collection;
2.
3.import java.util.HashMap;
4.import java.util.Iterator;
5.import java.util.LinkedHashMap;
6.import java.util.Map;
7.
8./**
9. * 老紫竹JAVA提高教程(14)-认识Map之LinkedHashMap。
10. *
11. * 这个类继承自HashMap,拥有其全部特性.
12. * 同时内部维护着一个所有条目的双重链接,具有可预知的迭代顺序。
13. * 默认按照插入的顺序进行显示.
14. * 重复插入一个Key的数据,不会影响到使用的先后顺序。
15. * 此类避免了HashMap的杂乱无章的使用顺序,同时又避免了TreeMap的额外成本.
16. *
17. * @author 老紫竹 JAVA世纪网(java2000.net)
18. *
19. */
20.public class Lession14LinkedHashMap {
21.  public static void main(String[] args) {
22.    // 分别使用2个类,进行相同的数据测试
23.    // 可以看到,HashMap的顺序是不可预测的
24.    // 而LinkedHashMap的顺序严格按照插入顺序
25.
26.    // 102=>102; 100=>100; 101=>101; 98=>98; 99=>99;
27.    testMap(new HashMap());
28.    // 98=>98; 99=>99; 100=>100; 101=>101; 102=>102;
29.    testMap(new LinkedHashMap());
30.
31.    // 删除数据后,LinkedHashMap会将数据放到末尾最后的位置
32.    // 而HashMap可能会使用前一个空缺的位置
33.  }
34.
35.  public static void testMap(Map map) {
36.    for (int i = 98; i <= 102; i++) {
37.      map.put(i, i);
38.    }
39.    showMap(map);
40.    // 尝试重复插入数据
41.    map.put(100, 100);
42.    showMap(map);
43.
44.    // 删除数据,并再次插入
45.    map.remove(100);
46.    map.put(100, 100);
47.    showMap(map);
48.  }
49.
50.  public static void showMap(Map map) {
51.    // 迭代Key的操作
52.    Iterator it = map.keySet().iterator();
53.    Object key;
54.    while (it.hasNext()) {
55.      key = it.next();
56.      System.out.print(key + "=>" + map.get(key) + "; ");
57.    }
58.    System.out.println();
59.  }
60.}

运行效果:

102=>102; 100=>100; 101=>101; 98=>98; 99=>99;
102=>102; 100=>100; 101=>101; 98=>98; 99=>99;
102=>102; 100=>100; 101=>101; 98=>98; 99=>99;
98=>98; 99=>99; 100=>100; 101=>101; 102=>102;
98=>98; 99=>99; 100=>100; 101=>101; 102=>102;
98=>98; 99=>99; 101=>101; 102=>102; 100=>100;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索hashmap
, 迭代
, java链接数据库
, hbase0 98
, 101
, 顺序
, 98
, TreeMap与LinkedHashMap
, 98]
102
map linkedhashmap、map转linkedhashmap、linkedmap 和hashmap、java linkedhashmap、linkedhashmap 遍历,以便于您获取更多的相关知识。

时间: 2024-08-03 22:23:16

JAVA提高教程(14)-认识Map之LinkedHashMap的相关文章

JAVA提高教程(13)-认识Map之Hashtable

这个类,在使用上和HashMap的区别不大,其方法都是同步的(Synchronized). 1.package collection.lession13; 2. 3.import java.util.Hashtable; 4. 5./** 6. * 老紫竹JAVA提高教程(13)-认识Map之Hashtable<br> 7. * 这个类继承自一个已经过期不推荐使用的Dictionary类<br> 8. * 目前均推荐实现Map接口<br> 9. * 10. * 11.

JAVA提高教程(12)-认识Map之HashMap

Map里面使用率最多的,应该是HashMap吧,我们先来看看这个 1.package collection.lession12; 2. 3.import java.util.HashMap; 4.import java.util.Iterator; 5.import java.util.Map; 6. 7./** 8. * 老紫竹JAVA提高教程(12)-认识Map之HashMap<br> 9. * 基于哈希表的 Map 接口的实现.<br> 10. * 一个映射不能包含重复的键:

JAVA提高教程(11)-认识Map

Map可以为某些数据提供快速查找功能,通过关键字(key)可以快速的得到对应的 Value,而不用像List那样需要大范围的遍历或特别的算法. 1. 源代码 1.import java.util.ArrayList; 2.import java.util.HashMap; 3.import java.util.HashSet; 4.import java.util.Iterator; 5.import java.util.List; 6.import java.util.Map; 7.impor

JAVA提高教程(10)-认识List列表之Stack

不多说,我们直接看源代码 1.package collection.lession10; 2. 3.import java.util.Arrays; 4.import java.util.List; 5.import java.util.Stack; 6. 7./** 8. * 老紫竹JAVA提高教程(10)-认识List列表之Stack<br> 9. * 实现了LIFO的对象堆栈,<br> 10. * 类本身继承自Vector,扩展了一些方法<br> 11. * &l

JAVA提高教程(9)-认识List列表之LinkedList

LinkedList提供了将链接列表用作堆栈.队列或双端队列的方法,这里不再重复介绍 List的标准操作,只给出其独特方法的使用. 请注意其已经实现的接口 Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E> 1.package collection.lession9; 2. 3.import java.util.Arrays; 4.imp

JAVA提高教程(8)-认识List列表之Vector

Vector和ArrayList的最大区别就是Vector的主要集合方法是线程同步的. 1.package collection.lession8; 2. 3.import java.util.Arrays; 4.import java.util.Collection; 5.import java.util.Enumeration; 6.import java.util.Iterator; 7.import java.util.List; 8.import java.util.Vector; 9

JAVA提高教程(6)-认识List列表

列表是很常用的数据结构,感觉比Map和Set用的频率要高一些吧,因为我经常用其返 回数据库的操作结果集 package collection.lession6; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Stack; import

JAVA提高教程(5)-认识Set集合之EnumSet

这个类是1.5开始有的,目前个人使用量几乎为零,因为我很少使用枚举,呵呵.我这 里也是简单介绍一下而已.其使用方式和普通的Set没有区别,只是构造方法有一些特殊 的而已. 1.package collection.lession5; 2. 3.import java.util.Arrays; 4.import java.util.EnumSet; 5.import java.util.Set; 6. 7./** 8. * 老紫竹JAVA提高教程(5)-认识Set集合之EnumSet.<br>

JAVA提高教程(3)-认识Set集合之LinkedHashSet

有序的集合,就是LinkedList,内部通过双向链表实现,LinkedHashMap为基础. package collection.lession3; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; /** * 老紫竹JAVA提高教程(3)-认识Set集合之LinkedHashSet.<br> * <br> * Link