2017-08-24 108 views
0

如何我可以在Java 8編寫代碼?的Java 8:迭代列表和添加項目到新地圖

for (Iterator<RecordVo> iterator = list.iterator(); iterator.hasNext();) { 
      RecordVo recordVo = (RecordVo) iterator.next();   
      ExecutionContext singleThreadExecutionContext = new ExecutionContext(); 
      singleThreadExecutionContext.put("customerId", recordVo.getCustomerId()); 
      singleThreadExecutionContext.put("ThreadName", "Thread-"+recordVo.getCustomerId()); 
      multiThreadExecutionContext.put("Partition - "+recordVo.getCustomerId(), singleThreadExecutionContext); 
     } 
+0

你爲什麼需要?這段代碼有什麼問題? –

+0

我正在學習Java8並試圖將我現有的代碼修改爲8個lambda。被困在這段代碼中。我嘗試使用流,收集,收集器,但無法前進 –

+0

看到,學習工具意味着還要學習該工具在哪裏有用以及哪裏不是。在這種情況下,流不是一個有用的工具。您可以通過使用'爲獲得更爲里程(每個:ofList)'這裏比從流,這是Java的6 –

回答

1

以下情況如何?

list.stream() 
    .map(RecordVo::getCustomerId) 
    .map(id -> { 
    // create singleThreadExecutionContext as before 
    return new SimpleImmutableEntry(id, singleThreadExecutionContext); 
    }) 
.forEach(e -> multiThreadExecutionContext.put("Partition - " + e.getKey(), e.getValue())) 

我沒有編譯它,但你可以做到這一點。

+0

它編譯和工作就像一個魅力。我只做了修改就是將e.getValue轉換爲ExecutionContext。 。 '(ExecutionContext)e.getValue()'我在我的代碼中使用舊的方式,但知道如何在Java 8中執行它真的很有幫助。感謝Abhijit。 –