【发布时间】:2021-08-05 01:47:05
【问题描述】:
这是一个编码面试问题。我能够得到想要的结果并通过所有的测试用例。但是我没有通过面试。我认为这是因为我以命令式的方式进行了操作 - 多个 for 循环、多个 HashMap 等。我正在尝试使用 Streams 来实现相同的结果。问题来了:
给定一个数组 String[][] 例如:{{"Scott","85"},{"Scott","67"},{"Tiger","81"},{"Tiger"," 21"},{"Marissa","92"}},找出平均分最高的人。下面是我所能得到的代码sn-p。
public static void main(String[] args) {
String[][] scores = {{"Tee","63"},{"Tee","75"},{"Tee","84"},{"Dee","59"},{"Dee","77"},{"Dee","66"},{"Dee","71"},{"Lee","81"},{"Lee","78"},{"Lee","58"},{"Bree","98"},{"Bree","78"}};
List<List<String>> slist = Arrays.stream(scores)
.map(Arrays::asList)
.collect(Collectors.toList());
slist.stream().collect(Collectors.groupingBy(l->l.get(0)));
}
我能够将 String[][] 转换为 List。我希望流式传输这个新列表,按第 0 个元素对其进行分组,然后对其求和,然后得到平均值。
【问题讨论】:
标签: lambda java-8 stream java-stream