【发布时间】:2018-04-06 02:16:44
【问题描述】:
我有一个代码块需要从 c# 转换为 java
public List<Student> getListWithSameStudentSet() {
return(StudentManager.studentList.ToList().FindAll(m =>
m.listID != this.listID
m.studentList.Except(this.studentList).Count() == 0));
}
我的尝试如下:
List<UUID> checklist = stream(StudentManager.studentList).select(m -> m.getstudentList()).first();
checklist.removeAll(this.studentList);
return(stream(ApplianceDataManager.signatureList).where(m ->
m.getListID() != this.listID &&
checklist.size() == 0)).toList();
我知道.first() 流没有执行FindAll。我有什么选择可以得到FindAll 和.Except?
提前通知:我的设备使用KitKat 和API level 19
【问题讨论】:
-
这不是 Java Stream API。除此之外,您应该认识到
checklist是否为空在整个操作过程中都不会改变,因此对每个元素重复它是没有意义的(因此它甚至与原始代码的逻辑不匹配)。但是m.studentList.Except(this.studentList).Count() == 0背后的逻辑是什么?this.studentList.containsAll(m.studentList)的一种非常低效的说法? -
@Holger 大声喊叫或至少短路
m.studentList.Except(this.studentList).Take(1).Count() == 0或!m.studentList.Except(this.studentList).Take(1).Any()
标签: java c# android java-stream