gpt4 book ai didi

java - 按主题查找礼帽的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-02 02:49:58 24 4
gpt4 key购买 nike

我有一个学生信息的字符串数组:

StudentNumber Integer, Subject String, mmarks integer

使用 java & 集合来找出每个主题的topper 的最佳方法是什么。

ArrayList<String> strings = new ArrayList<String>();
strings.add("1 | Computers | 48");
strings.add("2 | Data Structures | 89");
strings.add("33 | English | 35");
strings.add("24 | Maths | 70");
strings.add("15 | Computers | 58");
strings.add("6 | Data Structures | 55");
strings.add("7 | English | 40");
strings.add("18 | Maths | 73");

for (String str : strings) {
String [] strArray = str.split("\\|");
// in completed code
for (int i = 0; i < str.length(); i++) {
sam.put(strArray[0], strArray[2]);
s.add(strArray[1]);
}
}

预期输出

15 Computers
2 Data structures
7 English
18 Maths

最佳答案

创建 Result存储信息的类:

class Result {
private int studentNumber;
private String subject;
private int mark;

// constructor, getters and setters go here ...
}

现在转换您的 List<String>List<Result> :

List<Result> results = new ArrayList<>();
for (String s : strings){
String[] sa = s.split(" \\| ");
results.add(new Result(Integer.parseInt(sa[0]), sa[1], Integer.parseInt(sa[2])));
}

results 创建流列表,按科目分组,并找到得分最高的学生:

Map<String, Integer> map = results.stream()
.collect(Collectors.groupingBy(Result::getSubject,
Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(Result::getMark)), r -> r.get().getStudentNumber())));

打印结果:

map.forEach((k,v) -> System.out.println(v + " " + k));

15 Computers
18 Maths
7 English
2 Data Structures

关于java - 按主题查找礼帽的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44008225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com