有没有办法将下面的两个命令合并成一行,我使用 for 循环初始化 ArrayList?
ArrayList<KSE> kseList = new ArrayList<KSE>();
for (KSE k : allKSEs) if (k.isKeyPress()) kseList.add(k);
变量allKSEs
只是一个通用Collection
Collection<KSE> allKSEs = KSE.parseSessionToKSE(ksListString);
在 Java 8 中,您可以使用新的流语法:
List<KSE> kseList = allKSEs.stream()
.filter(KSE::isKeypress)
.collect(Collectors.toList());
在Java 8之前,你所拥有的就是我会写的,尽管我不会将循环压缩成一行。
如果你仍然使用Java 7,你可以使用Apache CollectionUtils,Apache BeanUtils和以下代码:
ArrayList<KSE> kseList = CollectionUtils.select(allKSEs, new BeanPropertyValueEqualsPredicate("keyPress", true));