我會好奇地知道如何將變量傳播到java 8中的流中。 一個例子比長時間的解釋更好,那麼如何將以下(抽象)代碼轉換成流:如何在java中傳播流中的變量8
Map<Integer,A> myMap = new HashMap();
for (Entry<Integer,A> entry : myMap)
{
int param1=entry.getValue().getParam1();
List param2=entry.getValue().getParam2();
for (B b : param2)
{
System.out.println(""+entry.getKey()+"-"+param1+"-"+b.toString());
}
}
知道,這個例子是問題的一個簡化(例如,我需要「參數1」不止一次的下一個for循環)
到目前爲止,唯一的想法我必須將我需要的所有信息存儲到一個元組中,以最終在這個元組上使用forEach流方法。 (不確定是非常清楚....)
編輯:我簡化了我的例子太多。我的情況是比較類似的東西:
Map<Integer,A> myMap = new HashMap();
for (Entry<Integer,A> entry : myMap)
{
int param1=entry.getValue().getParam1();
CustomList param2=entry.getValue().getParam2();
for (int i = 0; i<param2.size(); i++)
{
System.out.println(""+entry.getKey()+"-"+param1+"-"+param2.get(i).toString());
}
}
我可以寫類似的東西與流「)e.getValue.getParam2(」
myMap.entrySet().stream()
.forEach(
e -> IntStream.range(0, e.getValue.getParam2().getSize())
.forEach(
i -> System.out.println(e.getKey()+"-"+e.getValue().getParam1()+"-"+e.getValue.getParam2.get(i))
)
);
但是,我有什麼,而不是我的真實情況要複雜得多(一個5-6個方法的序列),並且比檢索一個變量(它執行一些邏輯)要重得多,所以我想避免重複e.getValue.getParam2(在forEach之前一次),並且一次在forEach)
我知道這可能不是最好的使用情況下使用流,但我正在瞭解它,並想知道有關限制
謝謝!
嘗試將其更改爲流可能沒有任何優勢。 – Kayaman