Java 8 流和映射值得吗?
感觉java 8流和映射函数非常冗长,它们并不是真正的改进。例如,我编写了一些代码,使用一个集合来生成另一个修改后的集合:
private List<DartField> getDartFields(Class<?> model) {
List<DartField> fields = new ArrayList<>();
for (Field field : model.getDeclaredFields()) {
if (!Modifier.isStatic(field.getModifiers())) {
fields.add(DartField.getDartField(field));
}
}
return fields;
}
这似乎是java 8流及其函数的理想用例,所以我这样重写了它:
private List<DartField> getDartFields(Class<?> model) {
return Arrays.asList(model.getDeclaredFields())
.stream()
.filter(field -> !Modifier.isStatic(field.getModifiers()))
.map(field -> DartField.getDartField(field))
.collect(Collectors.toList());
}
但我不确定我是否更喜欢这样。它是236个字符,而普通风格的java中有239个字符。它似乎不具有或多或少的可读性。很高兴您不必声明 一个 ,但需要调用和(取决于数据类型)也好不到哪里去。ArrayList
.collect(Collectors.toList())
Arrays.asList
像这样的使用是否有一些我没有得到的实际改进,或者这只是一种有趣的方式,可以将任何不了解函数式编程的同事扔进一个循环中?.stream()
我想如果我动态传递过滤器或映射lambdas,那将是有用的,但如果你不需要这样做......