`
cakin24
  • 浏览: 1388961 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

能够排序的Map实现类TreeMap类

    博客分类:
  • java
阅读更多

TreeMap类的介绍

        Map接口派生了一个SortedMap子接口,SortedMap有一个TreeMap实现类。

        TreeMap是基于红黑树对TreeMap中所有key进行排序,从而保证TreeMap中所有key-value对处于有序状态。TreeMap也有两种排序方式:

  • 自然排序:TreeMap的所有key必须实现Comparable接口,而且所有key应该是同一个类的对象,否则将会抛出ClassCastException异常。
  • 定制排序:创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中所有key进行排序。采用定制排序时不要求Map的key实现Comparable接口。

2 代码示例

import java.util.*;

class R implements Comparable
{
	int count;
	public R(int count)
	{
		this.count = count;
	}
	public String toString()
	{
		return "R[count:" + count + "]";
	}
	// 根据count来判断两个对象是否相等。
	public boolean equals(Object obj)
	{
		if (this == obj)
			return true;
		if (obj != null	&& obj.getClass() == R.class)
		{
			R r = (R)obj;
			return r.count == this.count;
		}
		return false;
	}
	// 根据count属性值来判断两个对象的大小。
	public int compareTo(Object obj)
	{
		R r = (R)obj;
		return count > r.count ? 1 :
			count < r.count ? -1 : 0;
	}
}
public class TreeMapTest
{
	public static void main(String[] args)
	{
		TreeMap tm = new TreeMap();
		tm.put(new R(3) , "兰花");
		tm.put(new R(-5) , "龟背竹");
		tm.put(new R(9) , "紫罗兰");
		System.out.println(tm);
		// 返回该TreeMap的第一个Entry对象
		System.out.println(tm.firstEntry());
		// 返回该TreeMap的最后一个key值
		System.out.println(tm.lastKey());
		// 返回该TreeMap的比new R(2)大的最小key值。
		System.out.println(tm.higherKey(new R(2)));
		// 返回该TreeMap的比new R(2)小的最大的key-value对。
		System.out.println(tm.lowerEntry(new R(2)));
		// 返回该TreeMap的子TreeMap
		System.out.println(tm.subMap(new R(-1) , new R(4)));
	}
}

 

 

3 运行结果

{R[count:-5]=龟背竹, R[count:3]=兰花, R[count:9]=紫罗兰}

R[count:-5]=龟背竹

R[count:9]

R[count:3]

R[count:-5]=龟背竹

{R[count:3]=兰花}

 

4 代码分析

上面示例以自然排序为例,介绍TreeMap的基本用法。

0
0
分享到:
评论

相关推荐

    Map,HashMap,TreeMap的使用

    TreeMap 是一个排序的 Map 实现类,它可以根据键的自然顺序或自定义顺序遍历键。TreeMap 的键值对在取出时是排序的,如果需要按照某种顺序遍历键,那么 TreeMap 是更好的选择。 LinkedHashMap LinkedHashMap 是 ...

    java实现的map排序

    如果需要有序的Map,可以使用TreeMap,它会根据键的自然顺序进行排序,或者使用实现SortedMap接口的其他Map实现类,并指定排序规则。 在这个例子中,我们看到通过使用TreeMap来实现Map元素的排序。TreeMap是基于...

    对Map按key和value分别排序

    Map 是键值对的集合接口,它的实现类主要包括 HashMap、TreeMap、Hashtable 及 LinkedHashMap 等。其中,TreeMap 是基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据...

    Map实现类1

    Map接口定义了多种操作键值对的方法,而HashMap和TreeMap是两种常见的Map实现类。 1. HashMap - 数据结构:HashMap基于哈希表实现,内部使用数组加链表或者红黑树的结构。每个元素是一个内部类Node,实现了Map....

    Java Map按键排序和按值排序

    Java中的TreeMap,V&gt;类可以实现Map的按键排序。TreeMap,V&gt;是一个基于红黑树的实现,它可以保证映射按照升序顺序排列关键字。TreeMap,V&gt;的构造器可以接受一个比较器,用于定义比较规则。这样,我们可以按照键的自然...

    对于java map类排序

    然后,我们把原始未排序Map的键转换成`Object`数组,并使用`Arrays.sort()`对其进行排序。接下来,我们遍历排序后的键数组,将其与对应的值一起放入新的`TreeMap`中。最后,通过调用`tailMap(result.firstKey())`,...

    HashMap,HashTable,LinkedHashMap,TreeMap的区别

    TreeMap 是一种排序的 Map 实现类,它可以对放入里面的键和值进行排序。TreeMap 是基于红黑树的数据结构,具有良好的性能和可扩展性。TreeMap 不允许键或值为 Null。 比较 在选择 Map 实现类时,需要考虑以下几个...

    java map实例,排序

    本篇文章将详细探讨`HashMap`, `LinkedHashMap`, `TreeMap`, 和 `Hashtable`这四个常见的Map实现类,特别是它们如何处理排序的问题。 首先,`HashMap`是最常用的Map实现,它不保证元素的顺序,插入顺序和遍历顺序...

    Java Map 按值排序

    这个例子中,我们使用了Ordering的`natural().onResultOf()`方法来根据值进行排序,`reverse()`使排序变为降序,`immutableSortedCopy::apply`则用于创建一个新的不可变的排序Map。 总结来说,Java提供了多种方式来...

    Java 对象属性map排序示例

    Java提供了HashMap、TreeMap等实现Map接口的类。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会按照键的自然顺序或者自定义比较器进行排序。 **HashMap的排序** HashMap默认不保证元素顺序,如果需要对...

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

    本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, `TreeMap`以及`HashTable`之间的区别。 #### 1. HashMap `HashMap`是一种基于哈希表实现的`Map`接口,提供了一个非同步的、允许使用`null`键和...

    Java Map 集合类简介

    Java的核心类库提供了多种Map实现,如HashMap、TreeMap、LinkedHashMap、Hashtable等。HashMap是默认的无序、非同步实现,适合大多数情况;TreeMap基于红黑树,提供了有序的键值对,但性能略低于HashMap;...

    对map里面的value进行排序

    但是,对于已经创建的HashMap或其他非排序Map,我们不能直接改变它们内部value的排序。 要对Map的value进行排序,通常有两种方法: 1. 使用`Collectors.toMap()`方法 Java 8引入了Stream API,我们可以利用这个...

    Java TreeMap排序算法实例

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

    Map排序

    首先,我们要了解Map的两种主要实现类:HashMap和TreeMap。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会自动按键的自然顺序进行排序。如果键是自定义对象,那么需要该对象的类实现Comparable接口或者在...

    Java Map 按照Value排序的实现方法

    在Java编程中,Map接口是用于存储键值对的数据结构,常见的实现类包括HashMap、TreeMap、Hashtable和LinkedHashMap等。这些实现类各有特点,但默认并不保证元素的顺序。当我们需要按照Value(值)对Map进行排序时,...

    Java Map接口及其实现类原理解析

    TreeMap是基于红黑树的Map接口实现类,它提供了一个有序的映射关系,可以根据键的自然顺序或比较器来排序。TreeMap不允许null键,但允许null值。底层数据结构是红黑树,保证键唯一,且可以根据键的自然顺序或比较器...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了,value&gt;按value排序”是一个...

    重要知识java中map集合的用法.pdf

    每种实现类都有其特点和优点,例如 `HashMap` 是最常用的 Map 实现类,`TreeMap` 是一种排序的 Map 实现类等。 Map 接口和方法 Map 接口定义了四种类型的方法,包括 `equals()`、`hashCode()`、`put()`、`remove()...

Global site tag (gtag.js) - Google Analytics