2016-01-14 48 views
1

我有對象名單的字段標題。需要在列表中收集標題。我在下面的代碼中執行它。但是,也許有可能做得更優雅?謝謝。與集合最優雅的方式工作

ArrayList<String> organizationTitles = new ArrayList<String>(); 
for (Organization organization : result){ 
    organizationTitles.add(organization.getTitle()); 
} 
+0

不在Android上。雖然我不清楚你對此的看法。 –

+0

他不喜歡循環。 :P沒有人喜歡循環。循環規則! –

+0

在python中,我可以在單行使用地圖中做到這一點,我只是希望在android中找到像它這樣的東西。 – Kota1921

回答

1

如果您使用的是JDK 8,那麼是的。有你的情況的lambda:

result.forEach((Organization organization) -> organizationTitles.add(organization.getTitle())); 

這將做同樣的事情,但更緊湊。但是,如果您使用Java 7,則沒有更優雅的方式(據我所知)。

編輯:只是指出,你在Android上。我不認爲它已經支持Java 8,所以這可能不起作用。

+0

我想這不是真的鼓勵。添加到內部循環內的集合不是函數式編程。我會建議使用Stream.map()來代替。 –

1

如果resultCollection那麼你可以這樣做:

result.stream().forEach(e -> {organizationTitles.add(e.getTitle);}); 
+0

這並不是真的鼓勵我想。添加到內部循環內的集合不是函數式編程。我會建議使用Stream.map()來代替。 –

+0

會記住。謝謝! –

3

如果您在Java8是,這是做一個完美的方式:

List<String> organizationTitles = result.stream() 
             .map(Organization::getTitle) 
             .collect(Collectors.toList()) 

然後,如果你在戀愛失敗與此,here是你想要進一步去的地方:

相關問題