[英]Merge multiple list of different Objects with a common field into another list
[英]Java8 Collections Merge two different list with different objects and a common field
我有兩個類,其中有一個公共字段。 基於公共領域部門需要獲取所有記錄和總金額的列表
根據部門 id 合並記錄並將每個部門 id 的金額相加的最佳方法是什么?
// "ABC",(sum(1234.00f+1000.00f))
// "pqr",(sum(1200.00f+500.00f)))
// Expecting result as line 33, 34
package com.coll.java8.foreach;
public class Plist {
private String department;
private String posiName;
private double amount;
}
package com.coll.java8.foreach;
public class MList {
private String nameString;
private int id;
private String department;
}
package com.coll.java8.foreach;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.maxBy;
import java.math.MathContext;
public class Managers {
public static void main(String args[]) {
List<MList> manList = new ArrayList<MList>();
manList.add(new MList("Test1",123,"ABC"));
manList.add(new MList("Test2",134,"pqr"));
manList.add(new MList("Test3",456,"xyz"));
List<Plist> posslist = new ArrayList<Plist>();
posslist.add(new Plist("ABC","555",1234.00f));
posslist.add(new Plist("pqr","444",1200.00f));
posslist.add(new Plist("ABC","555",1000.00f));
posslist.add(new Plist("xyz","555",25.00f));
posslist.add(new Plist("pqr","444",500.00f));
// "ABC",(sum(1234.00f+1000.00f))
// "pqr",(sum(1200.00f+500.00f)))
// Expecting result as line 33, 34
}
我有兩個類,其中有一個公共字段。
不,你沒有。 您有兩個類,每個類都有一個恰好具有相同名稱的字段。 Java 不會將其視為“公共字段”,因為沒有繼承或共享接口。
你需要做的是這樣的:
public abstract class BaseRecord {
protected String department;
public String getDepartment() { return department; }
}
public class PList extends BaseRecord {
...
}
您的某些請求有點難以理解,但是如果您想對 PList 的數量求和,您可以使用List
:
double total = myList.stream()
.map(item -> item.getAmount())
.sum();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.