0
這裏是我的問題, 我有一個List < A> lista1,是我應該做的是:如何使用流應用多個過濾器和轉換到一個列表
地圖<關鍵,List < A >> m = groupby(lista1);
m = lista.stream.collect(Collectors.groupingBy);
對於每個組,返回一個元件與一些條件,並且使新列表列表< A> lista2 = MakeListfromGroup(米)
List<A> lista2; for (Map.Entry<key, List<A>> entry : m.entrySet()) { A theOne; for (A a : entry.getValue()) { if(condition){ theOne = a; } } lista2.add(theOne); } return lista2;
列表< B> listb1 = makeListB (lista2); //這裏,我不能使用stream.map.collect
List<Integer> b1Key; List<Integer> b2Key; for(A a : lista2){ b1key.add(a.b1key); b2key.add(a.b2key); } mapb1 = gerfromBD(b1key); mapb2 = gerfromBD(b2key); List<B> listb1; for(A a : lista2){ listb1.add(new B(mapb1.get(a.b1key),mapb2.get(a.b2key)); } return listb1
B已經構件B1 B1和B2 B2,創建一個新的列表< B> listb2 = applyFilter(列表<謂詞< B1 >>,列表<謂語< B2 >>)
List<B> listb2; nextb: for(B b : listb1){ for(Predicate p: filtreB1){ if(!p.accept(b.b1)){ continue nextb; } } for(Predicate p: filtreB2){ if(!p.accept(b.b2)){ continue nextb; } } listb2.add(b); } return listb2;
是否有可能把所有在一個流?或者以流的方式執行第4步?
在此先感謝
對於第3步,你爲什麼不能使用流.map.collect? – Ash
你寫了什麼代碼?這將有助於看到更多 – Ash
我需要從數據庫中獲取一些數據來構建B.所以我不能一個接一個地做。 – liumin