【发布时间】:2017-03-03 12:33:38
【问题描述】:
我有一群学生。首先,我想按标记对它们进行分组。然后我想进一步将这些集合分组为同名学生。
Map<Integer,Map<String,List<String>>> groupping = students.stream()
.collect(Collectors.groupingBy(Student::getMarks,
Collectors.mapping(Student::getName,Collectors.toList())));
我收到一条错误消息,
不能从静态上下文引用非静态方法。
是的。我非常清楚如果没有实例,我不能引用非静态方法。但是对于所有这些流操作,我对真正出了什么问题感到有些困惑。
而不是如何解决这个问题;我真的很想知道这里发生了什么。感谢您的任何意见!
因为如果我写下面的分组是完全有效的;
Map<Integer,List<Student>> m = students.stream().
collect(Collectors.groupingBy(Student::getMarks));
这是我的 Student.java 类(如果你需要的话)
public class Student {
private String name;
private int marks;
// getters, setters, constructor and toString
}
【问题讨论】:
-
你试图在 Map
> 中存储什么?我的意思是您要存储在 List 中的 String 对象是什么?学生姓名列表?? -
@SupunWijerathne 实际上,我的意图是将
Students 存储在最里面的List。 -
所以它应该是一个List
。不是吗? :))
标签: java java-8 java-stream method-reference collect