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
您可以对它执行一些操作,但是将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