是否可以使用String格式内的方法在java流中使用?

时间:2017-12-20 22:08:36

标签: java java-stream

是否可以像这样转换代码

for (Contacto contact : contactos) {
    fix.printf("%s\t%s\t%s\n", 
        contact.getName(), contact.getNumb(), contact.getDateOfBirth());
}

进入java流?

1 个答案:

答案 0 :(得分:2)

当然可以 - 下面应该使用Stream的{​​{3}}方法:

contactos.stream()
         .forEach(c -> fix.printf("%s\t%s\t%s\n", c.getName(), c.getNumb(), c.getDoB()));

请记住这可能会影响可读性 - 我认识的大多数人会说循环比这更容易阅读。

另外请记住,为此,您应该使用forEach代替forEach - forEach并不保证处理项目的顺序,以及对于并行流而言这很重要。 forEachOrdered保证逐项处理项目。

您可以省略对Stream的调用,具体取决于您的容器 - 如果它实现了forEachOrdered(大多数标准容器都这样做),那么您应该使用Iterable而不是流(所以contactos.forEach(...)。它更整洁,避免了创建Stream的开销。

您还可以避免上面的forEachOrdered问题,因为这些项目按迭代顺序处理""。