Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于Arraylist中的属性值对对象进行分组_Java_Arrays_Arraylist - Fatal编程技术网

Java 基于Arraylist中的属性值对对象进行分组

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

我有一个属性为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
类贷款{
大十进制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,则可以使用以下代码:-

映射loanListGroup= loanList.stream().collect(收集器.groupingBy(w->w.loanamount))

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

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


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流实现吗?