Java 基于Arraylist中的属性值对对象进行分组
我有一个属性为loanamount和duedate的贷款对象列表,我想根据loanamount对这些对象进行分组,并根据金额计算EMI的数量 到目前为止,我是在迭代器的帮助下通过迭代和比较列表中的每个对象来完成这项工作的。实现这一目标的更好方法是什么 示例:Java 基于Arraylist中的属性值对对象进行分组,java,arrays,arraylist,Java,Arrays,Arraylist,我有一个属性为loanamount和duedate的贷款对象列表,我想根据loanamount对这些对象进行分组,并根据金额计算EMI的数量 到目前为止,我是在迭代器的帮助下通过迭代和比较列表中的每个对象来完成这项工作的。实现这一目标的更好方法是什么 示例: class Loan{ BigDecimal loanamount; Date duedate; ----getters and setters } class Test { void sortLoan() { Loan loan1=ne
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
类贷款{
大十进制loanamount;
截止日期;
----接球手和接球手
}
课堂测试
{
void sortLoan()
{
Loan loan1=新贷款();
贷款1.setLoanamount(100);
loan1.setDuedate(新日期());//一月
Loan loan2=新贷款();
贷款2.setLoanamount(100);
loan2.setDuedate(新日期());//二月
Loan loan3=新贷款();
贷款3.setLoanamount(200);
loan3.setDuedate(新日期());//三月
Loan loan4=新贷款();
贷款4.setLoanamount(200);
loan4.setDuedate(新日期());//四月
Loan loan5=新贷款();
贷款5.setLoanamount(200);
loan5.setDuedate(new Date());//五月
贷款6=新贷款();
贷款6.setLoanamount(100);
loan6.setDuedate(新日期());//六月
贷款7=新贷款();
贷款7.setLoanamount(100);
loan7.setDuedate(新日期());//七月
List loanList=新建ArrayList();
贷款清单。添加(贷款1);
贷款清单。添加(贷款2);
贷款清单。添加(贷款3);
贷款清单。添加(贷款4);
贷款清单。添加(贷款5);
贷款清单。添加(贷款6);
贷款清单。添加(贷款7);
}
预期产出:前2个月贷款金额为100美元
未来3个月200美元的贷款金额
未来2个月的贷款金额为100美元
您应该检查Enumerable.GroupBy()
方法。如果您使用的是Java 8,则可以使用以下代码:-
映射Map>loanListGroup=loanList.stream().collect(收集器.groupingBy(w->w.loanamount))但是,在我的例子中,它也应该考虑位置/日期。在上面我解释的例子中,对象LoAN6和LoAN7的数量是100,但需要单独地与LoAN1和LoAN2对象分组。谢谢。eam().collect(Collectors.groupingBy(w->w.loanamount,Collectors.groupingBy(Loan::getDuedate)));谢谢。这同样适用于之前只将一个组中的所有100个组和另一个组中的200个组进行分组。但我要找的是3个组,比如一个组中的前2100个组,另一个组中的3200个组和一个组中的最后2100个组。这可以通过java 8流实现吗?