我有一个对象列表,List<FileNameAndScoreDTO> fileNameAndScoreList = new ArrayList<>();,我想根据分数访问文件的前7位名称,。
FileNameAndScoreDTO.java
public class FileNameAndScoreDTO {
String file_name;
int score;
long category;
}而类别的可以是早餐、午餐或晚餐。我想要一个21文件名的基础上的最高分数的,其中7个文件名早餐,7个午餐和7个晚餐。
请帮我解决这个问题。
发布于 2020-03-27 18:20:49
首先,我建议在这个类别中使用String,甚至更好的是使用Enum。
我以为你希望按降序得到得分最高的七个文件名。
下面的方法对给定类别进行筛选,按分数降序对剩馀对象进行排序,将对象数量限制为7,并将其文件名返回为List<String>。
public List<String> getTopSevenNamesOrderedByScoreDescOfCategory(List<FileNameAndScoreDTO> fullList, long category){
return fullList.stream()
.filter(f -> Long.compare(f.getCategory(), category) == 0)
.sorted((f1, f2) -> Integer.compare(f2.getScore(), f1.getScore()))
.limit(7)
.map(f -> f.getFile_name())
.collect(Collectors.toList());
}你可以这样调用这个函数。第一个参数是包含所有对象的列表。第二个参数是数字(?)属于这个类别。
List<String> topSevenNamesOrderedByScoreWithCategory1337 = getTopSevenNamesOrderedByScoreDescOfCategory(fileNameAndScoreList, 0l);https://stackoverflow.com/questions/60891586
复制相似问题