`
xiaofeng_dream
  • 浏览: 6046 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java Map资料的普及

阅读更多


java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列.

HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。

HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。

在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。
分享到:
评论

相关推荐

    java大纲资料.txt

    Java核心类库是Java平台提供的标准库,它为开发者提供了丰富的API,包括用于集合框架(List、Set、Map)的类、日期和时间API(Date、Calendar)、文件读写及序列化的java.io包、网络编程基础的***包,以及java.lang...

    java puzzler (java谜题)

    同时,中英文版的存在意味着这本书不仅面向国内的Java开发者,也为英语环境下的程序员提供了学习资源,增强了其普及性和实用性。 在解决Java Puzzler的过程中,开发者可以学习到: 1. **类型转换**:如何正确地...

    Google Maps V2.3.2 for Java (google map手机版含证书)中文版

    Java平台的跨平台特性使得这款谷歌地图能够在多种不同品牌和操作系统的手机上运行,这在当时智能机尚未普及的时代具有广泛的用户基础。尽管如今Android和iOS已成为主流,但对于老款手机用户,Java版本的谷歌地图仍然...

    Tank版2016Java

    3. **集合框架优化**:在Java 8中,集合框架进行了大量优化,如对List、Set、Map的操作有了Stream API的支持,使得数据处理更加高效。 4. **Spring框架**:2016年,Spring框架仍然是Java企业级应用开发的首选,...

    Java课件 Java课件 Java课件 Java课件

    Java的普及性和跨平台能力使其成为企业级应用开发、移动应用(尤其是Android系统)、大数据处理、云计算等多个领域的首选语言。 在Java学习的过程中,我们可以从以下几个主要知识点入手: 1. **基础语法**:包括...

    高级Java架构师培训 148节视频课-资料齐全

    - **并发编程**:随着多核处理器的普及,Java并发编程变得越来越重要。掌握线程生命周期、线程同步技术(如synchronized关键字、ReentrantLock、Condition等)、并发集合类(如ConcurrentHashMap)及高级并发工具类...

    Java体系结构介绍

    - 1993年,鉴于万维网(WWW)的普及,Sun重新定位Java,将其作为支持网页创建的技术。 - 1995年,Sun正式宣布推出Java。 #### 三、Java Language介绍 Java语言的特点包括: - **面向对象**:Java是基于面向对象...

    进击的Java 第16期

    - **解决方案**:介绍了函数式编程的核心概念,如映射(map)和过滤器(filter),并通过这些高级特性简化了常见的编程任务,使得代码更为简洁高效。 #### 如何在Android上编写高效的Java代码 - **资源管理**:针对...

    最新Thinking in java第四版经典版

    深入理解Java的核心类库是学习Java不可或缺的一部分,《最新Thinking in Java第四版经典版》详细讲解了Java集合框架,包括List、Set、Map等接口及其常见实现,如ArrayList、HashMap、TreeSet等。集合框架提供了一...

    张白一的java课件

    12. 接口与实现:List、Set、Map是主要的接口,ArrayList、LinkedList、HashSet、HashMap是它们的主要实现类。 13. 泛型:泛型引入了类型参数,增强了类型安全,减少了强制类型转换。 【Java输入/输出系统】 14. ...

    使用Java并发编程Concurrent Programming Using Java

    并发编程是现代软件开发中的一项关键技术,特别是在多核处理器日益普及的今天,掌握并发编程技术对于提升程序性能、响应性和资源利用率具有重要意义。下面将根据提供的标题、描述以及部分上下文信息,对Java并发编程...

    Java 毕业设计专用 毕业论文

    此外,异常处理、集合框架(如List、Set、Map)和IO流也是Java编程中的核心知识点。 2. **Java设计模式**:设计模式是解决软件设计中常见问题的经验总结,例如单例模式、工厂模式、观察者模式、装饰器模式等。在...

    【0积分】价值千元的Java思维导图干货资料,白嫖!

    对于Java进阶部分,思维导图可能会包含集合框架(如List、Set、Map)、IO流、多线程、网络编程、反射、注解等内容。这些是解决实际问题和提升代码效率的关键技术。 在Java的互联网应用开发中,Servlet和JSP是Web...

    java核心技术

    Java集合框架是Java标准库的重要组成部分,提供了丰富的数据结构,如List、Set、Map等,用于存储和操作数据集合。《Java核心技术》详细分析了各种集合类的特性和应用场景,以及它们之间的关系,帮助开发者选择最适合...

    Java_Architect_Notes-Balaji.rar_java architect

    1. **Java核心技术**:包括Java语法、面向对象编程(OOP)原则、异常处理、多线程、集合框架(如List、Set、Map)、IO流和NIO、反射等基础内容。这些是任何Java开发者必备的基础知识,对于架构师来说更是要精通。 2...

    java程序员初学20道题

    随着多核处理器的普及,Java编程面临新的挑战和机遇。多核环境下,需要特别注意以下几点: - **并发控制**:多线程编程时需要关注同步问题,确保共享资源的正确访问。 - **线程安全**:使用线程安全的数据结构,如`...

    Java语言程序设计-进阶篇第8版2011

    集合框架包含了List、Set、Map等常用的数据结构,掌握它们对于处理数据至关重要。 ### 异常处理与错误管理 异常处理是每个Java开发者都必须掌握的技能。本书可能包括如何正确地使用try-catch-finally语句来处理...

Global site tag (gtag.js) - Google Analytics