2016-05-19 3 views
0

У меня есть этот список, который является коллекцией класса 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

Есть ли у ваших объектов методы 'equals' и' hashcode'? Вам нужно сохранить первоначальный заказ? –

+0

Является ли идентификатор клиента уникальным идентификатором? Если да, как другие параметры отличаются с одинаковым идентификатором cust? – Amriteya

+0

итерации, создания уникального ключа от объекта, помещенного в хэш-карту, и когда это делается, используйте значения hashmap? –

ответ

1

Отсортировать их по заданным критериям, перебирать их и проверять, соответствует ли предыдущий элемент текущему элементу, если true - направить их в отдельный список/массив и после этого перебрать этот список/массив и удалить элементы из вашего список.

Примечание: вы должны написать свой собственный компаратор объектов.

Для будущего использования, если вы хотите иметь отдельную коллекцию - используйте набор.

0

Вы можете бросить свой список в набор и этот набор в новый список.

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

#perfomatters .. – GvSharma

+0

Это не работает. –

+0

Этот способ работает, только если у вас есть equals() и hashCode(). Поэтому вы должны реализовать эти два метода (возможно, используя «EqualsBuilder» и «HashCodeBuilder» или с объектами Guavas », как указано в ответе на [этот SO-вопрос] (http://stackoverflow.com/questions/5038204/apache- commons-equals-hashcode-builder)) – Frank

Смежные вопросы