当前位置: 首页 > 知识库问答 >
问题:

如何根据集合大小和对映射排序?

邬飞捷
2023-03-14
myMap.put("monday", [[3215, 5654], [5345], [3246, 7686, 4565]]) // 6 Long elements in total
myMap.put("tuesday", [[3215, 5654], [5345, 2879, 6734], [3246, 7686, 4565]]) // 8 Long elements in total
myMap.put("wednesday", [[9845, 2521], [0954]]) // 3 Long elements in total
("tuesday", [[3215, 5654], [5345, 2879, 6734], [3246, 7686, 4565]]) // 8 Long elements in total
("monday", [[3215, 5654], [5345], [3246, 7686, 4565]]) // 6 Long elements in total
("wednesday", [[9845, 2521], [0954]]) // 3 Long elements in total

共有1个答案

云联
2023-03-14

您可以对它执行一些操作,但是将hashmap按值排序确实是不可能的。

但是,如果知道要对其执行的操作,则可以使用以下解决方案。

myMap.entrySet()
     .stream()
     .sorted((entry1, entry2) -> {
         Integer sum1 = getSumOfSetCount(entry1.getValue());
         Integer sum2 = getSumOfSetCount(entry2.getValue());
         return Integer.compare(sum1, sum2);
     })
     .forEach(entry -> // perform operation);

getsumofsetcount()

public int getSumOfSetCount(List<Set<Long>> list) {
    return (int) list.stream()
                     .flatMap(Stream::of)
                     .count();
}
 类似资料:
  • 问题内容: 我有一个这样的: 我想根据列表值的大小按升序对地图进行排序。我怎样才能做到这一点? 在这种情况下,我希望订购加拿大,印度,美国的钥匙。 问题答案: 没有可保证的迭代顺序,因此您需要收集到一个才能使排序有意义。 之所以引发,是因为合并器功能仅用于并行流],而我们并未使用。 如果您觉得可读性更好,也可以使用:

  • 这是我的哈希图: 如何获得一个新的,它将包含每个客户的汽车数量,即的大小? 我想这样做没有循环,但只使用流。 我的尝试:

  • 编辑问题以包括所需的行为、特定的问题或错误,以及重现问题所需的最短代码。这将帮助其他人回答这个问题。 这是我的哈希映射: 如何获得一个新的,它将包含每个客户的汽车数量,即的大小? 我想不使用循环,但只使用流。 我的尝试:

  • 问题内容: 假设我有类User和UserGroup。有一个与用户关联的可选的1-many组,并且该关联是从双方映射的(UserGroup端通过一个名为“ members”的属性,它是一个HashSet,而User端则通过属性“ group”)。 使用Criteria API,如何查询所有组,并按组成员计数排序? (编辑)当我问到这是在SQL中执行分页时,我应该指出来,因此,如果可能,也应该在SQL