我需要实现一个采用Stream和整数并返回字符串列表的方法。列表应根据整数进行分组-从高到低的顺序排列,并且仅返回数字
我想在一个流中完成它,并得到这样的东西:
public static List<String> groupFunc(Stream<Nums> nums, int pass) {
List<Object> myList = nums.filter(s-> s.getScore() >= pass).sorted(Comparator.naturalOrder(s)).collect(Collectors.toList());
}
List<Nums> nums = new ArrayList<Nums>();
nums.add(new Nums("A", 80));
nums.add(new Nums("B", 57));
nums.add(new Nums("C", 21));
groupFunc(nums.stream(), 50).forEach(System.out::println);
// should print "A","B"
您能帮我忙吗?我不知道是否应该使用filter + soreted。也许是foreach? Comparator.naturalOrder
只是暂时的。
答案 0 :(得分:2)
接口Comparator
中的实用程序方法对于以下类型的操作非常有用:
public static List<String> groupFunc(Stream<Nums> nums, int pass) {
return nums
.filter(s-> s.getScore() >= pass)
.sorted(Comparator.comparing(Nums::getScore).reversed())
.map(Nums::getName)
.collect(Collectors.toList());
}