如何使用 java 从列表中的特定对象中添加和减去元素?
How to do add and subtract elements from particular object in list using java?
我在这样的列表中有对象列表,现在我的要求是添加所有具有相同 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());
感谢任何形式的帮助..
以下应按预期工作:
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);
}
}
我在这样的列表中有对象列表,现在我的要求是添加所有具有相同 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());
感谢任何形式的帮助..
以下应按预期工作:
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);
}
}