`

java中的TreeMap类使用实例解析

阅读更多
使用 java.util.TreeMap

TreeMap 类不仅实现了 Map 接口,还实现了 Map 接口的子接口 java.util.SortedMap。
TreeMap 类中不允许键对象为 null 或是 基本数据类型,这是因为 TreeMap 中的对象必须是可排序的(即对象需要实现 java.lang.Comparable 接口)

TreeMap 类通过实现 SortedMap 接口得到的方法如表1所示:
方法名称返回值类型说明
comparator()Comparator<? super K>获取 TreeMap 实例使用的 Comparator。使用空的构造方法创建的 TreeMap 实例,则返回 null
fisrtKey()K获取第一个(排在最低的)对象的 Key
lastKey()K获取最后个(排在最高的)对象的 Key
headMap(K toKey)SortedMap<K,V>获取一个子集。其所有对象的 key 的值小于 toKey
subMap(K fromKey, K toKey)SortedMap<K,V>获取一个子集。其所有对象的 key 的值小于 toKey ,大于等于 fromKey
tailMap(K fromKey)SortedMap<K,V>获取一个子集。其所有对象的 key 的值大于等于 fromKey
表1 TreeMap类通过实现java.util.SortedMap接口得到的方法


在创建 TreeMap 对象时,如果使用参数为空的构造方法,则根据 Map 对象的 key 进行排序;如果使用参数为 Comparator 的构造方法,则根据 Comparator 进行排序。

HashMap VS. TreeMap
在添加、删除和定位映射关系上,TreeMap类要比HashMap类的性能差一些,但是其中的映射关系具有一定的顺序。
如果不需要一个有序的集合,则建议使用HashMap类;如果需要进行有序的遍历输出,则建议使用TreeMap类。  在这种情况下,可以先使用 HashMap。在需要排序时,利用现有的 HashMap,创建一个 TreeMap 类型的实例(例如下面的例子)。


import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class TestCollection {

    public static void main(String[] args) {
        System.out.println("开始:");  
              
        Person person1 = new Person("马先生", 220181);
        Person person2 = new Person("李先生", 220193);
        Person person3 = new Person("王小姐", 220186);
        
        Map<Number, Person> map = new HashMap<Number, Person>();
        map.put(person1.getId_card(), person1);
        map.put(person2.getId_card(), person2);
        map.put(person3.getId_card(), person3);
        
        // HashMap
        System.out.println("HashMap,无序:");
        for (Iterator<Number> it = map.keySet().iterator(); it.hasNext();) {
            Person person = map.get(it.next());
            System.out.println(person.getId_card() + " " + person.getName());
        }
        
        // TreeMap
        System.out.println("TreeMap,升序:");
        TreeMap<Number, Person> treeMap = new TreeMap<Number, Person>();
        treeMap.putAll(map);
        for (Iterator<Number> it = treeMap.keySet().iterator(); it.hasNext();) {
            Person person = treeMap.get(it.next());
            System.out.println(person.getId_card() + " " + person.getName());
        }
        
        System.out.println("TreeMap,降序:");
        TreeMap<Number, Person> treeMap2 = 
            new TreeMap<Number, Person>(Collections.reverseOrder());
        treeMap2.putAll(map);
        for (Iterator it = treeMap2.keySet().iterator(); it.hasNext();) {
            Person person = (Person) treeMap2.get(it.next());
            System.out.println(person.getId_card() + " " + person.getName());
        }
        
        System.out.println("结束!");
    }
}








引用:
https://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html




-转载请注明
原文出处:http://lixh1986.iteye.com/blog/1757589













--
  • 大小: 10.3 KB
分享到:
评论

相关推荐

    Map,HashMap,TreeMap的使用

    Java 中的 Map、HashMap、TreeMap 使用详解 Map 是 Java 集合框架中的一个接口,用于存储键值对,根据键可以获取值。Map 中的键不允许重复,但值可以重复。在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 ...

    Java程序设计技巧与开发实例

    本资源“Java程序设计技巧与开发实例”深入探讨了Java编程中的关键技术和实用策略,旨在帮助开发者提升编程效率和代码质量。 首先,Java的设计原则包括“Write Once, Run Anywhere”(一次编写,到处运行),这得益...

    Java入门与实例

    - **异常与异常类**:了解Java中的异常机制,如何抛出和捕获异常,以及使用try-catch-finally结构处理异常。 - **自定义异常**:学习在必要时创建自己的异常类。 4. **集合框架** - **数组与泛型**:学习使用...

    java jdk 实例宝典源码

    Java JDK实例宝典源码是Java开发者的重要参考资料,它涵盖了JDK中的各种核心类库、API及其实现的源代码。这些源码对于深入理解Java语言的底层运作机制、优化代码以及解决实际问题有着不可估量的价值。下面,我们将...

    java 实例源代码

    这些知识点在提供的源代码实例中可能会有具体的应用,例如,你可能会看到如何定义和使用类、对象,如何处理异常,如何实现多线程,以及如何利用集合框架进行数据操作等。通过分析和实践这些例子,你可以更深入地理解...

    java工具类

    在Java中,工具类通常是静态方法的集合,无需实例化对象就能直接调用,大大提高了代码的可复用性和开发效率。以下是对28个常用的Java工具类的详细说明: 1. **`java.util.Arrays`**:这个类提供了处理数组的各种...

    JAVA开发常用工具类

    在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法通常用于执行特定的、重复的任务,以提高代码的重用性和效率。这些工具类不依赖于实例化,而是通过调用静态方法来提供服务。下面我们将...

    java100实例

    7. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口和类,它们为存储和操作对象提供了丰富的选择。 8. **IO流**:Java的输入/输出...

    java 集合类 容器类

    #### 三、实例代码解析 以下是一些使用不同集合类的示例代码: ##### 3.1 Set 示例 ```java import java.util.*; public class SetExample { public static void main(String[] args) { Set&lt;String&gt; set = new...

    Java基础知识实例

    以上内容涵盖了Java基础知识的主要方面,通过实例分析,你可以更深入地理解和应用这些概念,为后续的Java开发打下坚实的基础。Java笔记文件应该包含了这些知识点的详细解释和示例代码,建议仔细阅读和实践。

    Java编程精选集锦,含有很多具体的实例小程序

    4. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。熟练掌握它们的特性和使用场景可以提高代码效率。 5. **IO流**:Java的IO流用于数据...

    JAVA完全自学手册解析

    《JAVA完全自学手册解析》是针对初学者和进阶者的一本全面的指南,旨在帮助读者深入理解JAVA编程语言的核心概念和技术。这本书的课后答案解析部分尤其关键,因为它提供了实践练习的解答,有助于巩固理论知识,提升...

    Java 集成开发实例精解

    《Java集成开发实例精解》一书主要涵盖了Java在实际项目中的综合应用,旨在通过具体的实例帮助读者深入理解和掌握Java编程技术。以下是对这个主题的详细解析: Java是一种广泛使用的面向对象的编程语言,由Sun ...

    Java JDK实例宝典(夏先波著)书的所有源代码

    《Java JDK实例宝典》是由夏先波编著的一本针对Java初学者和进阶者的重要参考资料,书中包含了丰富的Java编程实例,旨在帮助读者深入理解Java JDK(Java Development Kit)的各项功能和用法。这本书的源代码是学习...

    java 2 SE core卷所有实例源代码

    了解如何声明、实例化和使用类与对象是Java学习的关键。 3. **封装**:封装是面向对象编程的一个重要特性,它隐藏了类的内部实现细节,只对外提供公共接口。通过访问修饰符(public、private、protected)来控制...

    sun公司sun的java实例手册

    Java编程语言是由Sun Microsystems...总结,"Sun公司的Java实例手册"将全面涵盖这些Java编程的基础和高级概念,通过实例解析,帮助开发者深入理解和运用Java技术,无论是初学者还是经验丰富的程序员,都能从中受益。

    java常用工具类

    在Java编程语言中,工具类(Utility Classes)是那些提供了静态方法或常量,用于执行特定任务或提供通用功能的类。这些类通常被设计为不可实例化,以确保其功能只能通过静态调用来访问。Java标准库(Java Standard ...

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    在Java中,可以使用类适配器或接口适配器,使不兼容的接口能够协同工作。 7. **装饰器模式**:动态地给一个对象添加一些额外的职责。Java的IO流类库广泛使用了装饰器模式,如`BufferedReader`、`...

Global site tag (gtag.js) - Google Analytics