如何使用Java 8 lambda和Steam API获取元素的总和
问题描述:
如何将下面的内容转换为Stream API和lambda表达式。如何使用Java 8 lambda和Steam API获取元素的总和
double journalSize = 0;
List<PersistenceAdapter> allKahadb = ((MultiKahaDBPersistenceAdapter)persistenceAdapter).getAdapters();
for (PersistenceAdapter persistenceAdapter : allKahadb) {
Journal journal = ((KahaDBPersistenceAdapter) persistenceAdapter).getStore().getJournal();
int noOfJournels = journal.getFiles().size();
long journalMaxSize = journal.getMaxFileLength();
journalSize += (journalMaxSize * noOfJournels)/ Memory.ONE_MB;
}
我试着用map和stream的总和,但没有帮助?基本上我需要日记大小的总和。
答
map
你的对象Journal
实例,然后将它们映射到double
值要总结:
double journalSize =
allKahadb.stream()
.map(pa -> ((KahaDBPersistenceAdapter)pa).getStore().getJournal())
.mapToDouble(j -> ((double) j.getMaxFileLength() * j.getFiles().size())/Memory.ONE_MB)
.sum();
感谢叶兰的帮助,如何处理内部地图例外(() - >),实际上(( KahaDBPersistenceAdapter)pa).getStore()。getJournal())抛出IO异常。 将整个代码片段放入try catch中并不奏效。 我刚开始使用Stream,尝试用Stream找到方法 – Ankit