专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java treemap反向遍历的实现

Java treemap反向遍历的实现

更新时间:2020-08-11 17:06:10 来源:动力节点 浏览3432次

实现TreeMap的反向遍历,虽然有很多方法,但是发现treeSet有个

public IteratordescendingIterator()

返回在此set元素上按降序进行迭代的迭代器

指定者:

接口NavigableSet中的descendingIterator

返回:

在此set元素上按降序进行迭代的迭代器

从以下版本开始:

1.6

而TreeMap的键就是一个TreeSet集合啊,所以就很好做了。但是我们用keySet()得到的是一个Set集合,descendingIterator()只能由TreeSet调用,所以就要把set转换成TreeSet

以TreeMap为例(当然其他的TreeMap都可以):

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
 
public class SetAndTreeSet {
 
	/**
	 * Wang Yanming
	 */
	public static void main(String[] args) {
		
		TreeMap tm = new TreeMap();
		tm.put(1,"中国");
		tm.put(2,"首都");
		tm.put(3,"北京");
		//如何将这三个排序实现输出北京、首都、中国??
		
		Set set =  tm.keySet();
		//我们知道Integer是final类不允许取继承和重写其中方法。
		//而 tm.keySet()得到的是Integer类型的集合set,从小到大遍历如:
		Iterator it = set.iterator();
		//while(it.hasNext())
		//{
		//	System.out.println(tm.get(it.next()));//输出的顺序是中国  首都  北京
		//}
		
		
		//如何进行反向输出呢?TreeeSet提供了一个descendingIterator()得到降序迭代器
		//但是只有TreeSet可以调用,就需要将Set转化成treeSet了
		
		TreeSet  ts = new TreeSet();
		while(it.hasNext())
		{
			ts.add(it.next());
		}
		
		Iterator it2 = ts.descendingIterator();
		
		while(it2.hasNext())
		{
			System.out.println(tm.get(it2.next()));//输出顺序北京 首都 中国
		}
	}
}

代码讲的很细了。不明白或那位大牛有更好的办法一起讨论吧

这是对于TreeMap而言,但是要是List就好办了,可以利用ListIterator按任意顺序排列

java treemap反向遍历

以上就是动力节点java培训机构的小编针对“Java treemap反向遍历的实现”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>