2017-10-29 10 views
-1

以下は、Stream APIとラムダ式に変換する方法です。Java 8ラムダとスチーム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; 
} 

マップとストリームの合計では何も手伝っていませんでしたか?基本的に私はジャーナルサイズの合計が必要です。 Journalインスタンスへ

答えて

1

mapあなたのオブジェクトや、あなたが合計したいdouble値にマップ:マップ内で例外を処理する方法の助けを

double journalSize = 
    allKahadb.stream() 
      .map(pa -> ((KahaDBPersistenceAdapter)pa).getStore().getJournal()) 
      .mapToDouble(j -> ((double) j.getMaxFileLength() * j.getFiles().size())/Memory.ONE_MB) 
      .sum(); 
+0

おかげエラン、(() - >)(実際には、( pa).getStore()。getJournal())はIO例外をスローします。 スニペット全体をtry catchに入れてもうまくいきません。 私はちょうどストリームで作業を開始し、ストリームで方法を見つけようとします – Ankit

関連する問題