简体   繁体   English

映射java int流

[英]Map java int stream

I'm learning about streams and I'm trying to map a test score to a letter grade using a stream. 我正在学习流,并且正在尝试使用流将测试成绩映射到字母等级。 I think I'm close but I can't figure out the code to map it. 我想我已经接近了,但是我想不出代码来映射它。 The part that I'm hung up on is the Map at the end of the code. 我挂断的部分是代码末尾的Map。 Here's the code that I have. 这是我的代码。

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);

}
}

You can simply use Collectors.toMap() : 您可以简单地使用Collectors.toMap()

Map<String, Integer> grade = list.stream().collect(
    Collectors.toMap(GradeBook::getLetterGrade, GradeBook::getScore)
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM