java - 使用 Collections.sort 对 hashmap 进行排序,每隔几个值重新开始一次排序
问题描述
我有一个字符串的 HashMap,RetentionFeedUser。
RetentionFeedUser 是一个具有 2 个 int 值的对象,我想通过它们对 hashmap 进行排序。这是我在 RetentionFeedUser 类中的 CompareTo 方法 -
@Override
public int compareTo(RetentionFeedUser other) {
//returns 1 if bigger, 0 if equal and -1 if smaller
return this.videoCounter - other.videoCounter + this.winningCounter - other.winningCounter;
}
这是我在活动中使用的实际排序方法 -
private void sortHashMap(Map<String, RetentionFeedUser> retentionFeedUserHashMap) {
List<Map.Entry<String, RetentionFeedUser>> list = new ArrayList<>(retentionFeedUserHashMap.entrySet());
Collections.sort(list, (entry, t1) -> entry.getValue().compareTo(t1.getValue()));
Collections.reverse(list);
}
出于某种原因,它以一种奇怪的方式对用户进行排序,只给我内部 RetentionFeedUsers 的偶数,我知道这是不正确的。我注意到的第二件事是,在 log cat 中,它确实对它进行了正确排序(即使值不正确,它也遵循我想要的模式),但达到了一定程度。我会示范——
解决方案
推荐阅读
- android - 使用 jarsigner 在 Azure 管道上签名 Android 包失败,并出现错误“请指定别名”
- path - 如何在主页上设置信息并在单击另一个按钮/链接时触发
- asp.net - asp.net Core 在 UseRouting 之后在中间件中添加响应头
- google-apps-script - 有没有办法在 Google Apps 脚本中每隔几秒调用一次自定义函数?
- sql - 在单个列中针对给定日期返回活动记录与非活动记录计数
- mysql - 在 WHERE 子句中找到重复项时返回?
- design-patterns - 微服务和耦合——相互竞争的设计原则
- c# - Newtonsoft.Json 依赖项未在“dotnet publish -o”上以正确的版本发布
" - docker - Dockerfile:尝试创建 openssl 证书。没有错误,但没有创建文件
- r - sinh() 在 R 中返回 inf