第一种for循环:
demoList = Lists.newArrayList();
traditionList = Lists.newArrayList();
for(int i = 0;i < traditionListLength;i ++){
traditionList.add(demoList.get(i).getIndex());
}
for这种写法执行效率是最快也是最方便debug的,缺点是代码量比较大,
相对于LinkedList用forEach比较好,由于for循环的特性,
每次循环都会进行比较,forEach本质iterator遍历就是指针依次指向数据结构的成员
,适用于复杂的for循环。
缺点foreach不能对数组或集合进行修改(添加删除操作),
如果想要修改就要用for循环,所以相比较下来for循环更为灵活。
第二种forEach循环:
demoList = Lists.newArrayList();
forEachList = Lists.newArrayList();
demoList.forEach(demo -> {
forEachList.add(demo.getIndex());
});
forEach执行效率第二,代码量较小,但是debug比较费劲,
foreach不能对数组或集合进行修改(添加删除操作),因为它不具备索引。
第三种stream循环:
demoList = Lists.newArrayList();
streamList = Lists.newArrayList();
streamList = demoList.stream().map(demo ->
demo.getIndex()).collect(Collectors.toList());
stream执行效率最慢,如果说for是1秒stream需要10秒,但是代码量最小。
第四说说.stream().filter
stream.filter用于过滤,.collect(Collectors.toList())把流中所有元素收集到List中
此图参考:
https://www.cnblogs.com/lu51211314/p/9401160.html
网友评论