在地图查找十大价值

说我有一个TreeMap<String, Treeset<Song>>其中反对宋有三个字符串字段和内部CompareTo方法。 对于地图的关键是在歌词中独特的词是不常见的词语,如“她”,“的”,“如果”,或“ON”。 还有在地图上歌曲的多个副本,因为有平均映射到一首乐曲60个字。

对于额外的学分,教授要求我们拿出一个算法来找到地图中的前10个值。 我并没有解决问题的时间,这就是为什么我问这里。

我很为难的是,不像有序阵列或列表,你不能只抓前值顺序的一部分。 于是,我想到了:

Create a PriorityQueue<Node> with the Comparator sorting the Nodes based on the Set size iterate over the map for each map node create a Node object with the key-value pair insert Node into the queue

尽管时Queue将结束所有的键 - 值对,顶的大小将在顶部,我可以检索前十位。

这似乎是一个很迂回的方式,因为这个特殊的地图有31,000+节点映射到超过637000值。 有没有更好的办法?

--------------解决方案-------------

你的算法的简单修改:

Create a PriorityQueue<Node> with the Comparator sorting the Nodes based
on the Set size

iterate over the map
for each map node
if value for node is larger than last entry in priority queue
create a Node object with the key-value pair
insert Node into the queue
trim the queue to ten entries

在完成时,优先级队列将只包含前10项。

我不知道你用的关键,在这种情况下Soldier.moth是正确的希望前10,你可以专门获得降视图调用descendingMap,然后遍历的第10个元素。 但是,如果你通过一些其他的关系,希望前10名,就遍历ELEMENTSET和存储当前排名前10位中的一个排序的数据结构,像TreeSet中指定基于大小的比较 - 不知道什么大小你的意思,但你可能知道 - - 对于每个元素替换的最小的10,如果它是比当前小。 你获得的最小与firstKey

分类:java的 时间:2015-03-15 人气:0
本文关键词: 算法,JAVA,地图
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.447 (s). 10 q(s)