第四章java中的TreeMap与示例|
来源:网络
编辑:薄荷
时间:2022-06-19
TreeMap 类实现类似于 HashMap 的 Map。
关于 TreeMap 的一些要点:
- TreeMap 实现了 Map 接口并扩展了 HashMap 类。
- TreeMap 是使用基于红黑树的 NavigableMap 实现的。
- TreeMap 是有序集合,并以键的自然顺序存储其元素。
- 您要放入 TreeMap 的键必须实现 Comaparable 接口,或者您可以使用 Comparator 进行自定义排序
例子:
package org.arpit.java2blog;
import java.util.TreeMap;
public class TreeMapMain {
public static void main(String args[])
{
// TreeMap with Country as key and capital as value
// TreeMap stores elements in natural ordering of keys.
TreeMap<String,String> countryCapitalMap=new TreeMap<String,String>();
countryCapitalMap.put("India","Delhi");
countryCapitalMap.put("Japan","Tokyo");
countryCapitalMap.put("France","Paris");
countryCapitalMap.put("Russia","Moscow");
System.out.println("-----------------------------");
// Iterating TreeMap Using keySet() and for each loop
System.out.println("Iterating TreeMap Using keySet() and for each loop");
for (String countryKey:countryCapitalMap.keySet()) {
System.out.println("Country:"+ countryKey +" and Capital:"+countryCapitalMap.get(countryKey));
}
System.out.println("-----------------------------");
}
}
当你运行上面的程序时,你会得到以下输出:
-----------------------------
Iterating TreeMap Using keySet() and for each loop
Country:France and Capital:Paris
Country:India and Capital:Delhi
Country:Japan and Capital:Tokyo
Country:Russia and Capital:Moscow
-----------------------------
可以看到,它是按照 Key(Country) 的升序排列的
如果您想要自定义排序而不是自然排序怎么办:
如果你想要自定义排序,那么你可以使用下面的 TreeMap 构造函数。您可以定义自己的比较器。
TreeMap countryCapitalMap=new TreeMap(Comparator comp);
示例:创建 Country.java 如下
package org.arpit.java2blog;
public class Country {
String name;
long population;
public Country(String name, long population) {
super();
this.name = name;
this.population = population;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getPopulation() {
return population;
}
public void setPopulation(long population) {
this.population = population;
}
}
创建 TreeMapCompMain 如下:
package org.arpit.java2blog;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeMap;
public class TreeMapCompMain {
public static void main(String[] args)
{
Country india=new Country("India",1000);
Country japan=new Country("Japan",10000);
Country france=new Country("France",2000);
Country russia=new Country("Russia",20000);
Comparator comparator=new Comparator() {
@Override
public int compare(Country o1, Country o2) {
return o2.getName().compareTo(o1.getName());
}
};
System.out.println("Sorting TreeMap in reverse order of country name");
TreeMap<Country, String> countryCapitalMap=new TreeMap<Country,String>(comparator);
countryCapitalMap.put(india,"Delhi");
countryCapitalMap.put(japan,"Tokyo");
countryCapitalMap.put(france,"Paris");
countryCapitalMap.put(russia,"Moscow");
Iterator countryCapitalIter=countryCapitalMap.keySet().iterator();//put debug point at this line
while(countryCapitalIter.hasNext())
{
Country countryObj=countryCapitalIter.next();
String capital=countryCapitalMap.get(countryObj);
System.out.println(countryObj.getName()+"----"+capital);
}
}
}
当你运行上面的程序时,你会得到下面的输出:
Sorting TreeMap in reverse order of country name
Russia----Moscow
Japan----Tokyo
India----Delhi
France----Paris
您可以将 HashMap 传递给 TreeMap 的构造函数以在 Key 上对其进行排序
TreeMap countryCapitalMap=new TreeMap(Map hm);
通过将 HashMap 传递给 TreeMap 的构造函数,可以对 TreeMap 进行排序。示例:如下 创建 Country.java。它应该实现 Comparable 接口
package org.arpit.java2blog;
public class Country implements Comparable {
String name;
long population;
public Country(String name, long population) {
super();
this.name = name;
this.population = population;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getPopulation() {
return population;
}
public void setPopulation(long population) {
this.population = population;
}
@Override
public int compareTo(Object o) {
Country country=(Country) o;
return this.getName().compareTo(country.getName());
}
}
创建 TreeMapCompMain.java 如下:
package org.arpit.java2blog;
import java.util.HashMap;
import java.util.Iterator;
import java.util.TreeMap;
public class TreeMapCompMain {
public static void main(String[] args)
{
Country india=new Country("India",1000);
Country japan=new Country("Japan",10000);
Country france=new Country("France",2000);
Country russia=new Country("Russia",20000);
HashMap<Country, String> countryCapitalMap=new HashMap<Country,String>();
countryCapitalMap.put(india,"Delhi");
countryCapitalMap.put(japan,"Tokyo");
countryCapitalMap.put(france,"Paris");
countryCapitalMap.put(russia,"Moscow");
System.out.println("Sorting HashMap by passing it to TreeMap constructor");
TreeMap<Country,String> sortedTreeMapCountryCapital=new TreeMap<Country,String> (countryCapitalMap);
Iterator countryCapitalIter=sortedTreeMapCountryCapital.keySet().iterator();//put debug point at this line
while(countryCapitalIter.hasNext())
{
Country countryObj=countryCapitalIter.next();
String capital=countryCapitalMap.get(countryObj);
System.out.println(countryObj.getName()+"----"+capital);
}
}
}
运行程序时,您将得到以下输出:
Sorting HashMap by passing it to TreeMap constructor
France----Paris
India----Delhi
Japan----Tokyo
Russia----Moscow
相关文章:
- [其它]第六章JavaFutureTask示例|
- [其它]第六章JavaScheduledThreadPoolExecutor示例|
- [其它]第六章使用Callable和Future的JavaExecutorService示例|
- [其它]第六章JavanewCachedThreadPool示例|
- [其它]第六章JavanewFixedThreadPool示例|
- [其它]第五章在java中使用3个线程打印序列|
- [其它]第五章java中notify和notifyAll的区别|
- [其它]第五章我们可以在java中启动一个线程两次吗|
- [其它]第五章java中的对象级锁定与类级锁定|
- [其它]第五章Java线程连接示例|
相关推荐:
- [其它]第三章java中的抽象类|
- [其它]第四章java中的TreeMap与示例|
- [其它]第四章java中的hashcode()和equals()方法|
- [其它]第六章JavaFutureTask示例|
- [其它]计算机组成原理PDF扫描格式电子版百度云网盘下载
- [其它]程序设计语言概念(第9版)[Robert W. Sebesta]pdf格式电子版百度云网盘下载[53.8M]
- [其它]程序员必读之软件架构[Simon Brown]pdf格式电子版百度云网盘下载[41.6M]
- [其它]程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- [其它]程序员的职业素养[Robert C. Martin]pdf格式电子版百度云网盘下载[21.6M]
- [其它]程序员教程(第3版)[张淑平]pdf格式电子版百度云网盘下载[136.5M]
栏目分类
最新文章
热门文章
- 计算机组成原理PDF扫描格式电子版百度云网盘下载
- 硅谷之谜[吴军]pdf格式电子版百度云网盘下载[59.5M]
- 自选基金助手,一款Chrome扩展程序
- 七周七语言 理解多种编程范型[Bruce A. Tate]pdf格式电子版百度云网盘下载[9M]
- 系统集成项目管理工程师考试考眼分析与样卷解析(2014版)[软考新大纲研究组]
- 程序员面试金典(第5版)[Gayle Laakmann McDowell]pdf格式电子版百度云网盘下载[81.5M]
- 创业维艰 如何完成比难更难的事[Ben Horowitz]pdf格式电子版百度云网盘下载[65.3
- 程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- 图灵的秘密 他的生平、思想及论文解读[Charles Petzold]pdf格式电子版百度云网盘下
- OCP OCA认证考试指南全册:Oracle Database 11g(1Z0-051、1Z0-052、1Z0-053)[John Watson]pdf格式