【发布时间】:2020-10-21 19:25:56
【问题描述】:
如何获取记录,计数总和应在限制范围内。在下面的示例中有Records 对象包含recordId 和count,我想根据count 的总和应该小于或等于我的限制条件来获取记录数据。
public class Records {
private int recordID;
private int count;
public Records(int recordID, int count) {
this.recordID = recordID;
this.count = count;
}
public int getRecordID() {
return recordID;
}
public void setRecordID(int recordID) {
this.recordID = recordID;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
public static void main(String[] args) {
final List<Records> recordList = new ArrayList<>();
recordList.add(new Records(100, 10));
recordList.add(new Records(501, 20));
recordList.add(new Records(302, 5));
recordList.add(new Records(405, 2));
recordList.add(new Records(918, 8));
int limit = 35;
}
预期结果
recordList 应该有记录对象:[100,10]、[500,20]、[302,5] 记录
【问题讨论】:
-
我认为流操作不太适合这种情况。老式的
while循环就可以了。 -
函数式编程中的函数(由流使用)应该是无状态的。你的任务要求你记住一个状态。只需使用常规循环,这里没有流的好处。
-
@f1sh 在正确的函数式编程中,这将是一个前缀扫描操作,然后是一个 zip 和一个“take while”。问题是流是一次性的抽象。 这是这里的问题,而不是函数式编程。也就是说,它仍然可以作为归约或收集器来完成。
-
我从这次讨论中学到了很多!以下帖子也可能有所帮助(我认为它不是重复的,因为它更通用)-stackoverflow.com/questions/33058670/…
标签: java java-8 java-stream