[英]Java Initialize ArrayList From For-Loop
有沒有辦法將下面的兩個命令組合成一行,我使用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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.