Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap
的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注
意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了
true,则调用时会将键 k 重新插入到映射 m 中。)
此实现可以让客户避免未指定的、由 HashMap(及 Hashtable)所提供的通常为杂乱无章的排序工作,同时无需增加与 TreeMap 相关的成本。使用它可以生成一个与原来顺序相同的映射副本,而与原映射的实现无关:
修改过的测试代码:
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class Lession14LinkedHashMap {
public static void main(String[] args) {
// 分别使用2个类,进行相同的数据测试
// 可以看到,HashMap的顺序是不可预测的
// 而LinkedHashMap的顺序严格按照插入顺序
// 102=>102; 100=>100; 101=>101; 98=>98; 99=>99;
testMap(new HashMap());
// 98=>98; 99=>99; 100=>100; 101=>101; 102=>102;
testMap(new LinkedHashMap());
// 删除数据后,LinkedHashMap会将数据放到末尾最后的位置
// 而HashMap可能会使用前一个空缺的位置
}
public static void testMap(Map map) {
for (int i = 98; i <= 102; i++) {
map.put(i, i);
}
showMap(map);
// 尝试重复插入数据
System.out.println("----------- 尝试重复插入数据 --------------");
map.put(100, 100);
showMap(map);
showMapValues(map);
// 删除数据,并再次插入
System.out.println("----------- 删除数据,并再次插入 --------------");
map.remove(100);
map.put(100, 100);
showMap(map);
showMapValues(map);
// 删除数据
System.out.println("----------- 删除数据 --------------");
map.remove(100);
showMap(map);
showMapValues(map);
// 调用containsKey
System.out.println("----------- 调用containsKey --------------");
map.containsKey(98);
showMap(map);
showMapValues(map);
}
private static void showMapValues(Map map) {
System.out.println("showMapValues:"+map.values());
}
public static void showMap(Map map) {
// 迭代Key的操作
Iterator it = map.keySet().iterator();
Object key;
while (it.hasNext()) {
key = it.next();
System.out.print(key + "=>" + map.get(key) + "; ");
}
System.out.println();
}
}
来源:http://blog.csdn.net/java2000_net/archive/2009/01/09/3741565.aspx
分享到:
相关推荐
HashMap和LinkedHashMap 描述 该项目提供了可在Node.js和浏览器上运行的HashMap和LinkedHashMap类。 它们都是像一样的简化实现 ... 值得进行基准测试,以查看Map在这些情况下是否对您更好。 安装 使用 :
标题“LonelyInteger-LinkedHashMap”暗示我们正在讨论一个与Java编程相关的项目,特别是涉及到`LinkedHashMap`数据结构。`LinkedHashMap`是Java集合框架中`Map`接口的一个实现,它保留了插入元素的顺序或者按照访问...
如果关心元素顺序,可以使用LinkedHashMap,它维护了插入顺序或访问顺序。 3. **TreeSet与TreeMap** - TreeSet是基于红黑树实现的有序集合,插入、查找和删除操作的时间复杂度为O(logn),并且元素按自然顺序或...
JAVASE 综合测试题及答案 本资源为 JAVASE 基础测试题的汇总,涵盖了 Java 语言的多个方面,包括继承、多态、垃圾回收机制、数组和集合、Map 和 List 等。该资源共 10 题判断题和 6 题选择题,题目涵盖了 Java 语言...
`Map`接口还有其他实现,如`TreeMap`,它基于红黑树,提供有序的键值对,`LinkedHashMap`保持插入顺序或访问顺序,`ConcurrentHashMap`则适用于多线程环境下的并发操作。 在实际应用中,选择哪种`Map`实现取决于...
这个项目特别强调快速创建和全面的测试,包括单元测试和用户界面(UI)测试,以确保代码的稳定性和可靠性。 首先,让我们深入了解一下Swift中的字符串解析。在Swift中,字符串是不可变的,这意味着一旦创建,就不能...
- List(ArrayList、LinkedList)、Set(HashSet、LinkedHashSet、TreeSet)和Map(HashMap、LinkedHashMap、TreeMap)接口及其实现类的特性和使用场景。 - 泛型:用于限制容器中存储的数据类型,提高代码安全性和...
12. **集合框架高级**:深入理解List、Set、Map接口及其实现类的特性,如TreeMap、LinkedHashMap等。 13. **IO/NIO/BIO**:对比理解传统的IO模型与NIO(非阻塞IO)的优势,了解通道(Channel)和缓冲区(Buffer)的...
在这个名为"LRU.zip"的压缩包中,包含了三个文件,分别是Algoritma.doc、LRU.java和TestLRU.java,它们分别对应LRU算法的文档解释、Java实现和测试代码。 首先,Algoritma.doc可能详细介绍了LRU算法的工作原理。在...
5. **www.pudn.com.txt**:这个文件可能是程序的说明文档或测试用例。它可能包含了LRU缓存的具体使用示例,或者对算法的解释。 通过分析`LRU.java`,我们可以学习如何在实际项目中应用LRU缓存策略,理解如何利用`...
ConcurrentExpiringLinkedHashMap 多线程LinkedHashMap的Java实现,其元素在可单独定制的生存时间内到期。 非常适合缓存具有独特(易哈希)签名的元素。 基于来自java.net的InetAddresses的缓存进行功能测试。
- Map接口:HashMap、TreeMap、LinkedHashMap的实现原理和使用场景。 - Collections类:常用方法如sort、binarySearch、copy等。 3. **Java多线程** - 线程创建:Thread类和Runnable接口。 - 线程同步:...
- 创建`LinkedHashMap`来存储OAuth参数。 - 将所有必要的OAuth参数添加到map中,并按字母顺序排序。 接下来,创建另一个map(getSignOauthMap),用于构建签名的参数,同样按照OAuth规范进行排序。 最后,...
LinkedHashMap保持了插入顺序或者访问顺序,这对于某些需要有序显示的场景非常有用。 在浦发银行的笔试中,可能涉及到的Java Map知识点包括: 1. Map接口的基本操作:put()、get()、remove()、size()、clear()等。...
进行单元测试时,可以利用JUnit创建测试类,选择要测试的方法并进行断言,确保代码的正确性。在Eclipse中,可以通过新建JUnit Test Case来自动生成测试框架。 总结来说,JDBC是Java与数据库交互的核心,理解并熟练...
由于没有提供具体测试数据,无法直接评估如HashMap、TreeMap、LinkedHashMap等的性能,但通常HashMap提供快速的查找,TreeMap保证排序,而LinkedHashMap保持插入或访问顺序。 总结来说,选择哪种集合类取决于具体...
- **Cart类**:表示整个购物车,内部使用一个`LinkedHashMap`来存储商品项,键为商品ID,值为CartItem对象。这确保了商品的添加顺序被保留,对于展示购物车内容很有帮助。 3. **购物车方法详解** - `addItem...
在集合的优化方面,书籍会讨论如何有效地使用不同的集合类型来适应特定场景,比如在内存有限的情况下选择LinkedHashMap而不是HashMap,或者在需要避免重复元素时选择Set而不是List。此外,还会介绍Eclipse的性能分析...
- 测试类`LRUTest`:可能包含了测试用例,用于验证`LRU`类的功能,如插入数据、获取数据、查看缓存状态等。 在实际应用中,LRU算法广泛应用于数据库缓存、操作系统的页面管理等领域,通过优化内存使用,提高系统...