TreeMap 类实现类似于 HashMap 的 Map。
关于 TreeMap 的一些要点:
例子:
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
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
原文链接:https://codingdict.com/