有没有办法将下面的两个命令合并到一行中,在这里我使用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);发布于 2015-04-30 07:01:00
在Java8中,您可以使用新的streaming syntax
List<KSE> kseList = allKSEs.stream()
.filter(KSE::isKeypress)
.collect(Collectors.toList());在Java 8之前,您所拥有的是我要编写的内容,尽管我不会将循环压缩到一行中。
发布于 2015-04-30 07:19:59
如果你仍然使用Java7,你可以使用Apache CollectionUtils,Apache BeanUtils和以下代码:
ArrayList<KSE> kseList = CollectionUtils.select(allKSEs, new BeanPropertyValueEqualsPredicate("keyPress", true));https://stackoverflow.com/questions/29956070
复制相似问题