我有一個類似這樣的串列中的物件串列,現在我的要求是添加所有具有相同 id 的數量物件并從整個數量中減去批準數量,批準數量值永遠不會改變
[
{
"qty": 50,
"remainingQty": 0,
"ids": "123456",
"approvedQty": 600
},
{
"qty": 60,
"remainingQty": 0,
"ids": "123456",
"approvedQty": 600
},
{
"qty": 100,
"remainingQty": 0,
"ids": "12345",
"approvedQty": 345
}
]
Expected Output is something like this
[
{
"qty": 110,
"remainingQty": 490,
"ids": "123456",
"approvedQty": 600
},
{
"qty": 100,
"remainingQty": 245,
"ids": "12345",
"approvedQty": 345
}
]
我正在嘗試這樣的事情,
Map<String, List<Items>> elementsByItemId = initialItemList.stream()
.collect(Collectors.groupingBy(Items::getIds));
initialItemList = elementsByItemId.entrySet().stream()
.map(entry -> new SaLineItems(entry.getValue().stream().collect(Collectors.summingDouble(Items::getQty)),
entry.getKey()))
.collect(Collectors.toList());
任何形式的幫助表示贊賞..
uj5u.com熱心網友回復:
以下應該按預期作業:
public class Main {
public static void main(String[] args) {
List<Items> initialItemList = new ArrayList<>();
initialItemList.add(new Items(50, 0, "123456", 600));
initialItemList.add(new Items(60, 0, "123456", 600));
initialItemList.add(new Items(100, 0, "12345", 345));
Map<String, List<Items>> elementsByItemId = initialItemList.stream()
.collect(Collectors.groupingBy(Items::getIds));
List<Items> processedItems = elementsByItemId.values().stream().map(items -> {
String ids = "";
int qty = 0;
int approvedQty = 0;
for (Items item : items) {
ids = item.getIds();
approvedQty = item.getApprovedQty();
qty = item.getQty();
}
return new Items(qty, approvedQty - qty, ids, approvedQty);
}).collect(Collectors.toList());
System.out.println(processedItems);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377957.html
上一篇:push()和pop()在未附加到陣列時究竟做了什么?
下一篇:從Python中的矩陣中洗掉空格
