`
woshixushigang
  • 浏览: 578192 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

java中的TreeMap

    博客分类:
  • j2ee
阅读更多

 TreeMap类不仅实现了Map接口,还实现了Map接口的子接口java.util.SortedMap。由TreeMap类实现的Map集合,不允许键对象为null,因为集合中的映射关系是根据键对象按照一定顺序排列的,TreeMap类通

<script type="text/javascript"> /*640*60,创建于2010-9-19*/ var cpro_id = 'u208161';</script><script type="text/javascript" src="http://cpro.baidu.com/cpro/ui/c.js"></script><script type="text/javascript" charset="utf-8" src="http://cb.baidu.com/ecom?di=u208161&amp;tm=BAIDU_CPRO_SETJSONADSLOT&amp;fn=BAIDU_CPRO_CSETADSLOT&amp;baidu_id="></script>
-

使用TreeMap类
TreeMap类不仅实现了Map接口,还实现了Map接口的子接口java.util.SortedMap。由TreeMap类实现的Map集合,不允许键对象为null,因为集合中的映射关系是根据键对象按照一定顺序排列的,TreeMap类通过实现SortedMap接口得到的方法如表1所示。

表1  TreeMap类通过实现java.util.SortedMap接口得到的方法
在添加、删除和定位映射关系上,TreeMap类要比HashMap类的性能差一些,但是其中的映射关系具有一定的顺序,如果不需要一个有序的集合,则建议使用HashMap类;如果需要进行有序的遍历输出,则建议使用TreeMap类,在这种情况下,可以先使用由HashMap类实现的Map集合,在需要顺序输出时,再利用现有的HashMap类的实例,创建一个具有完全相同映射关系的TreeMap类型的实例,例如下面的例子。
下面的代码首先利用HashMap类实现一个Map集合,初始化并遍历;然后再利用TreeMap类实现一个Map集合,初始化并遍历,默认按键对象升序排列;最后再利用TreeMap类实现一个Map集合,初始化为按键对象降序排列,实现方式为将Collections.reverseOrder()作为构造函数TreeMap(Comparator c)的入口参数,即与默认排序方式相反,关键代码如下:
src\com\mwq\TestCollection.java关键代码:
public static void main(String[] args) {
Person person1 = new Person("马先生", 220181);
Person person2 = new Person("李先生", 220193);
Person person3 = new Person("王小姐", 220186);
Map<Number, Person> map = new HashMap<Number, Person>();
……// 由于篇幅有限,此处省略了向集合中添加映射关系的代码
System.out.println("由HashMap类实现的Map集合,无序:");
for (Iterator<Number> it = map.keySet().iterator(); it.hasNext();) {// 遍历集合
Person person = map.get(it.next());
System.out.println(person.getId_card() + " " + person.getName());
}
System.out.println("由TreeMap类实现的Map集合,键对象升序:");
TreeMap<Number, Person> treeMap = new TreeMap<Number, Person>();
treeMap.putAll(map);
……// 由于篇幅有限,此处省略了遍历集合的代码
System.out.println("由TreeMap类实现的Map集合,键对象降序:");
TreeMap<Number, Person> treeMap2 = new TreeMap<Number, Person>(
Collections.reverseOrder());// 初始化为反转排序
treeMap2.putAll(map);
……// 由于篇幅有限,此处省略了遍历集合的代码
}
src\com\mwq\TestCollection.java完整代码:
package com.mwq;
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);
System.out.println("由HashMap类实现的Map集合,无序:");
for (Iterator<Number> it = map.keySet().iterator(); it.hasNext();) {// 遍例集合
Person person = map.get(it.next());
System.out.println(person.getId_card() + " " + person.getName());
}
System.out.println("由TreeMap类实现的Map集合,键对象升序:");
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类实现的Map集合,键对象降序:");
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("结束!");

分享到:
评论

相关推荐

    java 中 TreeMap排序

    在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...

    java中treemap和treeset实现红黑树

    Java 中 TreeMap 和 TreeSet 实现红黑树 Java 中的 TreeMap 和 TreeSet 都是基于红黑树的数据结构实现的。红黑树是一种自平衡的排序二叉树,它可以保证在插入、删除和搜索操作时都能维持平衡,从而确保搜索、插入...

    java中TreeMap排序的示例代码

    Java 中 TreeMap 排序的示例代码 Java 中的 TreeMap 排序是 Java 语言中一种常用的数据结构排序方法。TreeMap 是一个有序的 Map 集合,它可以根据键的自然顺序或自定义的比较器进行排序。 TreeMap 排序的优点 1. ...

    java用treemap统计单词出现的个数

    在本例中,我们使用了TreeMap的put方法来将单词和其出现的次数作为键值对存储在TreeMap中。我们还使用了TreeMap的keySet方法来获取TreeMap的所有键,并使用了get方法来获取键对应的值。 知识点7:Java printf格式化...

    TreeMap in Java_java_treemap_

    Java中的`TreeMap`是一个基于红黑树(Red-Black Tree)数据结构的有序映射容器。它维护了键的自然顺序或者根据提供的比较器进行排序。`TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此...

    java treemap 学生信息

    在Java编程语言中,`TreeMap` 是一个有序的键值对集合,它实现了 `SortedMap` 接口。这个数据结构内部基于红黑树(Red-Black Tree)算法实现,保证了插入、删除和查找操作的时间复杂度为 O(log n)。在“java treemap...

    JAVA使用TreeMap对字符串进行排序

    在遍历过程中,我们使用ASCII值来筛选出所有的字母,然后将其存储到TreeMap中。 在遍历完成后,我们可以使用TreeMap的keySet方法来获取所有的键,然后遍历键值对,输出每个字符的出现次数。 在上面的代码中,我们...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    ### Java中HashMap, LinkedHashMap, TreeMap,HashTable的区别 在Java编程语言中,`Map`接口是集合框架中的一个重要组成部分,用于存储键值对。本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, ...

    Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

    在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。本文主要比较了这三种Map的性能,尤其是在插入和查找操作上的效率。 1. **TreeMap**...

    TreeMap源码

    - keySet(),values()和entrySet():这三种方法分别返回TreeMap中键的集合、值的集合和键值对的集合,这些集合都是动态更新的,反映了TreeMap的当前状态。 在分析TreeMap源码时,我们应关注以下几个关键类和方法: ...

    Java TreeMap排序算法实例

    Java TreeMap排序算法是Java中的一种常用的排序算法,主要用于对Map中的键值对进行排序。TreeMap排序算法的实现原理是基于红黑树数据结构的,通过将键值对插入到红黑树中,并对树中的节点进行排序,以达到对键值对的...

    java编写的命令行学生信息管理程序(用treemap)

    这个程序基于`Treemap`数据结构,这是一种在Java中由`java.util.TreeMap`类提供的有序映射,它允许以键值对的形式存储数据,并且能保持键的自然排序或者自定义排序。 `Treemap`的主要特点: 1. **有序性**:`...

    java集合-TreeMap的使用

    TreeMap是一种基于红黑树实现的有序映射(SortedMap)。它实现了NavigableMap接口,可以按照键的自然顺序或自定义排序规则对键值对进行排序和访问。

    Java中AVL平衡二叉树实现Map_(仿照TreeMap和TreeSet)1

    "Java中AVL平衡二叉树实现Map_(仿照TreeMap和TreeSet)1" 本文将详细介绍Java中AVL平衡二叉树实现Map的知识点,以便读者更好地理解和应用AVL树在Java中的实现。 一、AVL树的概念和特点 AVL树是一种自平衡二叉搜索...

    TreeMap源码解读.java

    TreeMap源码解读.java

    treeMap实现分组数据树形结构

    在Java编程中,TreeMap是一种基于红黑树(Red-Black Tree)算法实现的有序映射数据结构。它按照键的自然顺序或者自定义比较器的顺序来存储元素。在这个场景下,`TreeMap`被用来实现数据的分组,并构建一个树形结构,...

    Java提高篇之TreeMap编程开发技术共24页.pdf

    在Java编程语言中,`TreeMap`是`java.util`包下的一种有序的键值对存储结构,它基于红黑树(Red-Black Tree)算法实现。`TreeMap`提供了许多高级功能,如排序、迭代顺序等,适用于需要保持数据有序性的场景。本资料...

    Treemap-4.1.2

    3. **遍历**:由于TreeMap中的元素是有序的,可以使用`keySet()`, `values()`, 或 `entrySet()`方法获取迭代器,以便按顺序遍历元素。这对于打印或处理有序数据集非常有用。 4. **删除**:使用`remove()`方法可以...

    通过java.util.TreeMap源码加强红黑树的理解

    在Java.util.TreeMap中,红黑树被用来实现Map接口,以提供高效的键值存储和检索操作。本文将通过分析Java.util.TreeMap源码,深入探索红黑树的奥秘,并加强对红黑树的理解。 红黑树的规则 红黑树有四个基本规则: ...

Global site tag (gtag.js) - Google Analytics