有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于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

共 (2) 个答案

  1. # 1 楼答案

    如果您使用的是Java 8,则可以使用以下代码:-

    地图<;大十进制,列表>;贷款集团= 贷款清单。流()。收集(收集器.分组方式(w->;w.loanamount))

    试试看,让我知道它是否有效

    这一个在我的系统中运行,如果它对您有效,请告诉我

    地图>;loanListGroup=loanList。流()。收集(收集器.分组方式(w->;w.loanamount))

  2. # 2 楼答案

    您应该检查Enumerable.GroupBy()方法here