从List中删除了重复的元素

时间:2016-05-19 10:47:51

标签: java list

我有这个列表,它是GrossBalanceDtlsVO类的集合。

GrossBalanceDtlsVO类包含以下字段:

private Long customerID = null;

private BigDecimal instAmount = BigDecimal.ZERO;

private BigDecimal instBalanceAmount = BigDecimal.ZERO;

private BigDecimal instRedemptionAmt = BigDecimal.ZERO; 

private Long instTxnCnt = null;

private Date monthEndDt = null;
....
....



List<GrossBalanceDtlsVO> grossDetailsVO2 = getPCCustomerDetails(customerID);

此列表包含重复数据。例如:

customerID=1000033195, monthEndDt=2016-05-31, recMonthNo=9, recMonthlyLimit=100, recBalanceAmt=100, recMonthlyRedemption=0, recRollOverEligibility=0, txnId=null, instTxnCnt=null, instAmount=0, instBalanceAmount=0, instRedemptionAmt=0]
customerID=1000033195, monthEndDt=2016-06-30, recMonthNo=10, recMonthlyLimit=100, recBalanceAmt=100, recMonthlyRedemption=0, recRollOverEligibility=0, txnId=null, instTxnCnt=null, instAmount=0, instBalanceAmount=0, instRedemptionAmt=0]
customerID=1000033195, monthEndDt=2016-07-31, recMonthNo=11, recMonthlyLimit=100, recBalanceAmt=100, recMonthlyRedemption=0, recRollOverEligibility=0, txnId=null, instTxnCnt=null, instAmount=0, instBalanceAmount=0, instRedemptionAmt=0]
customerID=1000033195, monthEndDt=2016-05-31, recMonthNo=9, recMonthlyLimit=100, recBalanceAmt=100, recMonthlyRedemption=0, recRollOverEligibility=0, txnId=null, instTxnCnt=null, instAmount=0, instBalanceAmount=0, instRedemptionAmt=0]
customerID=1000033195, monthEndDt=2016-06-30, recMonthNo=10, recMonthlyLimit=100, recBalanceAmt=100, recMonthlyRedemption=0, recRollOverEligibility=0, txnId=null, instTxnCnt=null, instAmount=0, instBalanceAmount=0, instRedemptionAmt=0]
customerID=1000033195, monthEndDt=2016-07-31, recMonthNo=11, recMonthlyLimit=100, recBalanceAmt=100, recMonthlyRedemption=0, recRollOverEligibility=0, txnId=null, instTxnCnt=null, instAmount=0, instBalanceAmount=0, instRedemptionAmt=0]

现在我的问题是如何从此列表中删除这些重复数据?

2 个答案:

答案 0 :(得分:1)

按给定条件对它们进行排序,迭代它们并检查前一个元素是否等于当前元素,如果为true - 将它们推入单独的列表/数组中,然后迭代此列表/数组并从列表中删除项目。

注意:你应该编写自己的对象比较器。

为了将来的使用,如果你想拥有不同的集合 - 请使用集合。

答案 1 :(得分:0)

您可以将列表放入Set中,并将此Set设置为新列表。

List<GrossBalanceDtlsVO> grossDetailsVO2 = getPCCustomerDetails(customerID);
Set<GrossBalanceDtlsVO> grossDetailsVO2Set = new HashSet<>(grossDetailsVO2);
List<GrossBalanceDtlsVO> grossDetailsVO2WithoutDuplicates = new ArrayList<>(grossDetailsVO2Set);