Java 对映射逻辑进行排序
我在试图解决或想出一个我必须完成的任务的解决方案时遇到了一些困难 我想为我的申请建立一个排名系统。我的主要缓存数据结构如下:Java 对映射逻辑进行排序,java,algorithm,sorting,caching,Java,Algorithm,Sorting,Caching,我在试图解决或想出一个我必须完成的任务的解决方案时遇到了一些困难 我想为我的申请建立一个排名系统。我的主要缓存数据结构如下: Map<String user, Profile personsProfile> 然而,尽管这会很快,但是我需要通过在整个列表上迭代检查if(profile.getUserId().equals(“John”)然后返回索引来撤销所有好的工作 有谁知道解决这个问题的更好方法吗 谢谢可能会帮助您: SortedMap-ranking=新树形图(customCom
Map<String user, Profile personsProfile>
然而,尽管这会很快,但是我需要通过在整个列表上迭代检查if(profile.getUserId().equals(“John”)
然后返回索引来撤销所有好的工作
有谁知道解决这个问题的更好方法吗
谢谢可能会帮助您:
SortedMap-ranking=新树形图(customComparator);
...
字符串user=“John”;
int rank=ranking.headMap(user,true).size();
如果我正确理解了您的用例,您希望找到按配置文件排名排序的用户。将映射从以下位置更改如何:
Map<String user, Profile personsProfile>
Map
致:
Map
相反?现在的每个实现都将满足您的需要。当对键(即配置文件)进行迭代时,您可以按照提供的顺序获取它们。然后使用配置文件并查找用户。仅此而已。我不明白您为什么尝试对配置文件进行排序。根据您的描述,您总是希望找到给定用户的配置文件。您能提供您尝试实现的主要用例吗?但不是在代码或实现方面,而是在做什么。用户需要按照配置文件热值的顺序排列-从1->用户总数我认为这对他没有帮助,因为树状图是有序的,但你无法获得项目在其中的绝对位置,并且它像树一样备份。将项目作为数组来获取并不比他现有的想法更理想eeMap是一个
SortedMap
,它是按键而不是值排序的。这一点都没有帮助。@Harmlezz,真的,我的粗心。如果要尝试对地图进行排序,看看我的答案。我想在地图中切换键值
就可以了。哈哈,这太简单了,但我自己却很难做到。叹气!谢谢你提供了一个很好的解决方案
Collections.sort(cache.values(), new Profile.CompareHots)
Map<String user, Profile personsProfile>
Map<Profile personsProfile, String user>