基于Arraylist中属性值的java组对象
我有一个属性为loanamount和duedate的贷款对象列表,我想根据loanamount对这些对象进行分组,并根据金额计算EMI的数量
到目前为止,我是在迭代器的帮助下通过迭代和比较列表中的每个对象来完成这项工作的。实现这一目标的更好方法是什么
示例:
class Loan{
BigDecimal loanamount;
Date duedate;
----getters and setters
}
class Test
{
void sortLoan()
{
Loan loan1=new Loan();
loan1.setLoanamount(100);
loan1.setDuedate(new Date()); //Jan
Loan loan2=new Loan();
loan2.setLoanamount(100);
loan2.setDuedate(new Date()); //Feb
Loan loan3=new Loan();
loan3.setLoanamount(200);
loan3.setDuedate(new Date()); //Mar
Loan loan4=new Loan();
loan4.setLoanamount(200);
loan4.setDuedate(new Date()); //Apr
Loan loan5=new Loan();
loan5.setLoanamount(200);
loan5.setDuedate(new Date()); //May
Loan loan6=new Loan();
loan6.setLoanamount(100);
loan6.setDuedate(new Date()); //June
Loan loan7=new Loan();
loan7.setLoanamount(100);
loan7.setDuedate(new Date()); //July
List<Loan> loanList=new ArrayList<>();
loanList.add(loan1);
loanList.add(loan2);
loanList.add(loan3);
loanList.add(loan4);
loanList.add(loan5);
loanList.add(loan6);
loanList.add(loan7);
}
Expected output : Loan amount of $100 for 1st 2 months
Loan amount of $200 for next 3 months
Loan amount of $100 for next 2 months
# 1 楼答案
如果您使用的是Java 8,则可以使用以下代码:-
地图<;大十进制,列表>;贷款集团= 贷款清单。流()。收集(收集器.分组方式(w->;w.loanamount))
试试看,让我知道它是否有效
这一个在我的系统中运行,如果它对您有效,请告诉我
地图>;loanListGroup=loanList。流()。收集(收集器.分组方式(w->;w.loanamount))
# 2 楼答案
您应该检查
Enumerable.GroupBy()
方法here