Java 使用流转换嵌套for循环逻辑

Java 使用流转换嵌套for循环逻辑,java,java-8,java-stream,time-complexity,big-o,Java,Java 8,Java Stream,Time Complexity,Big O,我有一组代码,我想使用我使用for循环完成的stream执行,但无法使用stream或其他更好的方法执行,请提供建议 for (Student student : students) { List<Laptop> filteredLaptop = new ArrayList<>(); for (Laptop laptop: student.getLaptopList()) { if(laptop.getColour(

我有一组代码,我想使用我使用for循环完成的stream执行,但无法使用stream或其他更好的方法执行,请提供建议

for (Student student : students) {
        List<Laptop> filteredLaptop = new ArrayList<>();
        for (Laptop laptop: student.getLaptopList()) {
            if(laptop.getColour().endsWith("RED")){
                filteredLaptop.add(laptop);
            }
        }
        student.setLaptopList(filteredLaptop);
 }
for(学生:学生){
List filteredLaptop=new ArrayList();
用于(笔记本电脑:student.getLaptopList()){
if(laptop.getcolor().endsWith(“红色”)){
filteredLaptop.add(笔记本电脑);
}
}
student.setLaptopList(filteredLaptop);
}
如何降低代码的复杂性,或者如何使用类似的流执行相同的操作(我认为最好重命名LaptopList)


“我怎样才能降低代码的复杂性?”你不能“如何使用流执行相同的操作?”您为什么要这样做?这个代码没有问题。将其转换为流不会改善代码,实际上会使代码运行变慢。复杂性为n2有什么方法可以提高复杂性@Andreas为什么你认为复杂性为O(n^2)?你的
n
是什么根据您的变量,复杂性要么是O(n),其中
n
是笔记本电脑总数,要么是O(n*m),其中
n
是学生人数,
m
是每个学生的笔记本电脑平均数量。。。。你不能将其从
O(n*m)
进一步简化,除非你正在尝试实现一些具体的目标,而不是访问每个学生的所有笔记本电脑以确定他们是否匹配。关于代码,您可以对学生的笔记本电脑列表(那些不符合您的标准的)执行
removeIf
,以将其更新到位。
students.forEach(student -> 
  student.setLaptops(
    student.getLaptops().stream()
      .filter(laptop -> laptop.getColour().endsWith("RED"))
      .collect(toList())
    )
 );