首页 > 解决方案 > 使用 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 中,它确实对它进行了正确排序(即使值不正确,它也遵循我想要的模式),但达到了一定程度。我会示范——

显示它已正确排序但之后从 1 开始的 Logcat

标签: javaandroidhashmap

解决方案


推荐阅读