我的嵌套for回圈看起來是這樣的:
for(int i=0; i<productGroups.size(); i ) {
for(int j=0; j<productGroups.get(i).getProducts() .size(); j ) {
AmountEntity storageValue = productGroups.get(i).getStorageValue()。
productGroups.get(i).getProducts().get(j).setQuantity(storageValue)。
}
}
我非常肯定,一定有一個更有效的方法來做到這一點,而不會有n2的復雜性。
productGroup是一個串列,里面有產品串列,而我只是遍歷這兩個串列來設定數量。
如果有人能在這里幫助我,我將非常高興。
uj5u.com熱心網友回復:
如果你想在所有產品組的所有產品上設定一個值,你將需要訪問每一個產品。有多少個?如果你有x個產品組,每個產品組有y個產品(為了爭論),那么你就需要訪問x*y個產品。這是沒辦法的事。不過你可以讓代碼更簡潔、更易讀,反正這一點通常更重要:
for(ProductGroup productGroup : productGroups) {
AmountEntity storageValue = productGroup.getStorageValue()。
for(Product product : productGroup.getProducts() ) {
product.setQuantity(storageValue);
}
}
或者以lambda形式:
productGroups.forEach(pg -> {
AmountEntity storageValue = pg.getStorageValue()。
pg.getProducts().forEach(p -> p.setQuantity(storageValue))。
});
注意,一個產品組中的每個產品都得到相同的storageValue,所以你可以在外回圈中定義該變數,如上圖所示。如果你能改變領域模型,你可以問自己為什么無論如何都要將 storageValue 從 productGroup 復制到每個產品,因為這基本上是多余的資訊,但也許有一個好的理由。
如果我看到這樣的邏輯,我最初不會擔心性能問題。呼叫getters和setters通常不會成為性能瓶頸。只有當你為數以百萬計的產品做這件事時,才會花費一些時間。在這種情況下,解決方案不在于加快這些迭代,而在于減少獲取的產品數量(例如,通過分頁)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326068.html
標籤:
