我正在学习有关流的知识,并试图使用流将测验分数映射到字母等级。我想我已经接近了,但是我想不出代码来映射它。我挂断的部分是代码末尾的Map。这是我的代码。
import java.util.ArrayList;
import java.util.Arrays;
import static java.util.Collections.list;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.function.Function;
import java.util.stream.Collectors;
public class LetterGrades {
public static void main(String[] args) {
List<String> gradeMap = new ArrayList<>();
GradeBook[] grades = {
new GradeBook(90, "A"),
new GradeBook(80, "B"),
new GradeBook(70, "C"),
new GradeBook(60, "D"),
new GradeBook(0, "F")};
List<GradeBook> list = Arrays.asList(grades);
// gradeMap.add("A");
// gradeMap.add("B");
// gradeMap.add("C");
// gradeMap.add("D");
// gradeMap.add("F");
//List<Integer> grades = new ArrayList<Integer>();
// grades.add(94);
// grades.add(85);
// grades.add(91);
// grades.add(100);
// grades.stream()
// .forEach(System.out::println);
Map<String, Integer> grade = list.stream().
collect(Collectors.groupingBy(GradeBook::getLetterGrade,
Collectors.joining(GradeBook::getScore)));
System.out.println(grade);
}
}
答案 0 :(得分:4)
您可以简单地使用Collectors.toMap()
:
Map<String, Integer> grade = list.stream().collect(
Collectors.toMap(GradeBook::getLetterGrade, GradeBook::getScore)
);