TreeMap类通过使用树来实现Map接口.TreeMap提供了按排序顺序存储关键字/值对的有效手段,同时允许快速检索。不像散列映射,树映射保证它的元素按照关键字升序排序。
import java.util.*;
class TreeMapDemo{
public static void main(String[] args)
{
//Creat a tree map
TreeMap tm = new TreeMap();
//Put elements to the map
tm.put("Evan",new Double(12345.77));
tm.put("Rose",new Double(78777));
tm.put("Magic",new Double(-99.10));
tm.put("Mike",new Double(100.00));
tm.put("Sue",new Double(17.15));
//Get a set of entries
Set set = tm.entrySet();
//Get an iterator
Iterator i = set.iterator();
//Display elements
while(i.hasNext()){
Map.Entry me = (Map.Entry)i.next();
System.out.println(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
//Deposit 1000 into Evan's account
double balance = ((Double)tm.get("Evan")).doubleValue();
tm.put("Evan",new Double(balance + 1000));
System.out.println("Evan's new balance : " + tm.get("Evan"));
}
}
*******************************************
比较函数类TComp比较两个包含姓和名的字符串。它首先比较姓,具体是这样做的,首先寻找每一个字符串中最后一个空格的下标,然后比较从这个位置开始的每一个元素的子字符串。当两个字符串中姓完全相等时,再比较两个名。这样就形成了先按姓排序,在姓相同的情况下再按名字进行排序的树型映射。
//Use a comparator to sort accounts by last name.
import java.util.*;
//Compare last whole words in two strings.
class TComp implements Comparator{
public int compare(Object a,Object b){
int i,j,k;
String strA,strB;
strA = (String)a;
strB = (String)b;
//find index of beginning of last name
i = strA.lastIndexOf(' ');
j = strB.lastIndexOf(' ');
k = strA.substring(i).compareTo(strB.substring(j));
if(k==0) //last name match,check entire name
return strA.compareTo(strB);
else
return k;
}
//no need to override equals
}
public class TreeMapDemo2{
public static void main(String[] args)
{
//Create a tree map.
TreeMap tm = new TreeMap(new TComp());
//Put elements to the map.
tm.put("Sue Yuan",new Double(17.15));
tm.put("Jiahui Sheng",new Double(78777));
tm.put("Huajiang Chen",new Double(12345.77));
tm.put("Magic Ya",new Double(-99.10));
tm.put("Quanbing Chen",new Double(100.00));
//Get a set of the entries.
Set set = tm.entrySet();
//Get an iterator.
Iterator i = set.iterator();
//Display elements.
while(i.hasNext()){
Map.Entry me = (Map.Entry)i.next();
System.out.println(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
//Deposit 1000 into Jiahui Sheng's account
double balance = ((Double)tm.get("Jiahui Sheng")).doubleValue();
tm.put("Jiahui Sheng",new Double(balance + 1000));
System.out.println("Jiahui Sheng's new balance : " + tm.get("Jiahui Sheng"));
}
}
分享到:
相关推荐
以下是使用 TreeMap 实现排序的示例代码: ```java import java.util.*; public class Screen implements Comparable<Screen> { private double size, price; @Override public int compareTo(Screen s) { ...
TreeMap是一种数据结构,它是Java集合框架的一部分,位于`java.util`包中。它实现了一个映射接口,其中键...这些源代码也可能包含了一些示例或者API的使用说明,帮助开发者更好地理解和使用这个特定版本的TreeMap。
接下来,我们可以使用`TreeMap`提供的方法来求学生的总分。由于`TreeMap`是有序的,我们可以遍历所有键值对并累加分数: ```java int totalScore = 0; for (Map.Entry, Integer> entry : studentScores.entrySet())...
如果没有提供比较器,`TreeMap` 默认会根据键的自然顺序进行排序,即实现了 `Comparable` 接口的键的 `compareTo()` 方法。 `TreeSet` 是一个有序的 `Set` 实现,它同样使用了红黑树结构。与 `TreeMap` 不同,`...
Java中实现Map排序的方式主要有两种,一种是使用TreeMap,另一种是使用SortedMap接口。HashMap内部元素是无序的,它不会记录插入顺序,也不保证顺序。如果需要有序的Map,可以使用TreeMap,它会根据键的自然顺序进行...
在代码示例中,可以看到`SmileCollections`类分别测试了`TreeSet`和`HashMap`的用法。对于`TreeSet`,虽然尝试添加了多个相同的`Student`对象,但由于`TreeSet`不允许重复元素,最终集合中只会保留一个元素。对于`...
本教程将详细讲解TreeMap的两种主要添加方式:使用put()方法和构造函数。 一、TreeMap的简介 TreeMap是基于红黑树数据结构实现的,这使得它在插入、删除和查找操作上的性能非常高效,通常为O(log n)。与HashMap不同...
若要根据特定规则排序List中的元素,可以使用`Collections.sort()`方法。 2. **Set**: 保证元素的唯一性,如HashSet和TreeSet。TreeSet基于红黑树实现,自动维护元素的排序。默认按照元素的自然顺序或自定义比较器...
四、Map排序示例 1. 对于键排序: ```java for (Map.Entry, Integer> entry : list) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } ``` 2. 对于值排序: ```java ...
- 如果对HashMap进行大量的排序操作,考虑使用TreeMap,它默认按照key的自然顺序排序,也可以自定义Comparator。 **5. 结论** HashMap排序并不是HashMap本身的功能,而是通过其他手段实现的。根据实际需求,可以...
在Java中,这可能涉及到对HashMap或TreeMap等数据结构的使用,以便快速地根据笔画信息查找和比较汉字。同时,为了减少内存占用,可能采用了更紧凑的数据表示方式,比如使用位运算存储笔画信息,或者优化了数据结构的...
至于博客中的“源码”标签,可能涉及到对上述方法的底层实现原理进行分析,包括Stream API的内部工作方式以及TreeMap如何进行排序。而“工具”标签可能意味着博主还介绍了某些可以帮助处理Map排序的第三方库或实用...
2. **使用TreeMap或Collections.sort()**:可以使用`TreeMap`或者`Collections.sort()`方法来对键进行排序。这里展示了两种不同的实现方式: - 使用`TreeMap`:创建一个`TreeMap`对象并传入`ByValueComparator`作为...
不过,以下是一个基本的示例,展示如何使用自定义Comparator对HashMap的值进行排序: ```java import java.util.*; public class ValueSortedHashMap { public static void main(String[] args) { Map, Integer>...
理解这两个接口的用法,并熟练掌握`Collections.sort()`和`Arrays.sort()`的使用,是成为熟练Java开发者的必备技能。在实际编程中,灵活运用这些知识可以解决各种排序需求,提高代码的可读性和可维护性。
以下是这些实现类的详细分析及其使用方法。 #### HashMap `HashMap`是基于哈希表的Map接口实现。它不保证映射的顺序,特别是它不保证该顺序恒久不变。具体特点如下: - **键值快速查找**:`HashMap`提供基于哈希...
- 由于Map本身不支持直接排序,我们可以先将Map的Entry转换为List,然后使用Collections.sort()方法进行排序。这适用于任何Map实现,包括HashMap和TreeMap。 - 示例代码: ```java List, Integer>> list = new ...
- TreeSet 底层使用 TreeMap 作为其实际存储容器,这意味着 TreeSet 中的元素实际上是通过 TreeMap 的键值对形式存储的,其中键为元素本身,值通常不重要(如 `null`)。 3. **方法实现**: - 与 HashSet 类似,...
接下来,我们可以使用`Collections.sort()`或`Arrays.sort()`方法,传入自定义的`Comparator`实例来对列表或数组进行排序: ```java List<ChessMove> moves = ...; // 获取棋步列表 Collections.sort(moves, new ...
标题中的“自己写的一个随机数的例子,采用hashmap排序”表明这是一个关于生成随机数并使用HashMap进行排序的程序示例。在这个例子中,我们将探讨如何生成随机数、HashMap的数据结构以及其排序机制。 首先,随机数...