Java Comment Garder les Valeurs Uniques Dans Une Liste d'Objets
Je suis actuellement la recherche d'une liste d'objets List<NprDto>
(Le NprDto classe contient accountId, theDate1, et theDate2) à partir d'une requête qui renvoie des résultats où le NprDto a double accountIds. J'ai besoin d'avoir un List<NproDto>
de seulement unique accountIds mais garder l'objet. Il doit seulement ajouter de la première accountId il vient à travers et ignore le reste.
Je suis en train d'essayer ceci:
private List<NprDto> getUniqueAccountList(List<NprDto> nonUniqueAccountList) throws Exception {
Map<Long,NprDto> uniqueAccountsMapList = new HashMap<Long,NprDto>();
List<NprDto> uniqueAccountsList = null;
if(nonUniqueAccountList != null && !nonUniqueAccountList.isEmpty()) {
for(NprDto nprDto : nonUniqueAccountList) {
uniqueAccountsMapList.put(Long.valueOf(nprDto.getAccountId()), nprDto);
}
}
uniqueAccountsList = new ArrayList<NprDto>(uniqueAccountsMapList.values());
return uniqueAccountsList;
}
Mais cela ne semble pas fonctionner, car quand je l'itération à travers le retour de l'uniqueAccountsList plus tard, il ne capte que le premier objet.
Toute aide serait grandement appréciée.
Êtes-vous sûr de ont des numéros de compte? Je pense que votre conception est bonne (permet d'économiser beaucoup de travail, vous devez faire un Jeu), et que ton code semble bon aussi. Je parie que votre problème est ailleurs.
J'ai eu une sortie de déclaration dans le mauvais emplacement. Tout fonctionne très bien. Merci!
J'ai eu une sortie de déclaration dans le mauvais emplacement. Tout fonctionne très bien. Merci!
OriginalL'auteur Richard | 2013-11-21
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
Set<NprDto>
. Pour cela vous avez besoin de remplacerequals
ethasCode
àNproDto
classe.Changer votre
getUniqueAccountList
comme suit:OriginalL'auteur Masudul
Ce dont vous avez besoin ici est un
LinkedHashSet
. Il supprime les doublons et conserve l'ordre d'insertion.Vous ne pas besoin
TreeSet
ici, car il trie et modifie l'ordre de l'originalList
.Si la préservation de l'ordre d'insertion n'est pas le plus important, utilisez un
HashSet
.OriginalL'auteur Adam Arold
Fait, vous avez besoin de implémente d'égal à égal et hascode méthode, il sera bon pour vous
Supprimer les doublons d'une liste
Java contient la valeur Unique mais ses des ménagères de collection. La liste est triée de la collection, mais contient les copies des objets.
OriginalL'auteur Asif Bhutto
Ce que vous devez faire est de mettre en œuvre les
equals
,hashCode
etcompareTo
méthodes pourNprDto
pour correspondre à deux objets que l'égalité lors de leur ID est le même. Ensuite, vous pouvez filtrer tous les doublons aussi facile que cela:OriginalL'auteur noone