【发布时间】:2019-09-24 20:58:41
【问题描述】:
给定一个唯一值子列表的列表(也就是说两个不同的子列表不能共享相同值的元素) - 例如:
List[List[1, 1, 1], List[2], List[4, 4], List[7]]
如何将其转换为具有(值、大小)键值对的 Map?
这将导致:
{
1 : 3
2 : 1
4 : 2
7 : 1
}
将我们的列表定义为values,我假设可以使用流并像这样收集地图:
values.stream().collect(Collectors.toMap(Integer::intValue, ? ));
目前不确定为第二个参数输入什么,因为它需要value mapper,但不允许在任何子列表上调用.size()。
【问题讨论】:
-
当输入为
List[List[1, 1, 1, 6], List[2], List[4, 4], List[7, 6]]时,预期的输出是什么?预计是{1:4,2:1,4:2,7:2}还是{1:3,2:1,4:2,6:2,7:1}? -
@Naman 我们假设输入仅包含在其各自列表中具有相等值元素的列表。
List[1, 1, 1, 6]不符合此描述。 -
好的,那么考虑输入
List[List[1, 1, 1], List[2], List[4, 4], List[7], List[1, 1],你现在期望输出是什么? -
你提出了很好的边缘案例 - 我将更新我的问题以注意任何两个子列表中的元素之间的唯一性,不包括它自己。
标签: java dictionary java-stream