0
votes

Duplicates vient dans Hashset

Dans mon développement Android, je reçois des données particulières de l'API. Et en utilisant ces données i itérer pour créer hashset. Le but de cette mise en œuvre est de supprimer les doublons. Mais la duplication toujours est présentant.

D/HASHSET: values in HashSet object [League One]
D/HASHSET: values in HashSet object [Championship]
D/HASHSET: values in HashSet object [Premiership]
D/HASHSET: values in HashSet object [Championship]
D/HASHSET: values in HashSet object [League One]
D/HASHSET: values in HashSet object [Premiership]
.....


2 commentaires

Vous faites mal. À l'intérieur de la boucle, vous initialisez et ajoutez à chaque fois dans chaque itération. Déplacez votre initialisation de Hash Set en dehors de la boucle.


Maintenant, la sortie est comme D / HASHSET: Valeurs de HASHSET Object [Pro League, Championnat] D / HASHSET: Valeurs de HASHSET Object [Pro League, Championnat, Premier League] D / HASHSET: Valeurs dans HASHSET Object [Pro League , Championnat, Premiership, Premier League] D / HASHSET: Valeurs de HASHSET Object [Pro League, Championnat, Premiership, Premier League] .............


3 Réponses :


3
votes

Votre boucle crée un nouvel ensemble dans chaque itération de la boucle:

// Create set
HashSet<String> hashSetObject = new HashSet<String>();

// Add elements to the set
for(int i=0;i<array.length();i++) {
    hashSetObject.add(leagueName);
}

// Read each element from the set
for (String valueInSet : hashSetObject) {
    Log.d("HASHSET","value in HashSet object " + valueInSet);
}


6 commentaires

Après avoir déplacé l'instanciation, ma sortie est comme d / hashset: valeurs dans HASHSET objet [Pro League, Championnat] D / HASHSET: Valeurs dans HASHSET Object [Pro League, Championnat, Premier League] D / HASHSET: Valeurs dans HASHSET Object [Pro League, championnat, Premiership, Premier League] D / HASHSET: Valeurs de HASHSET Object [Pro League, Championnat, Premiership, Premier League] .......


édité la réponse à la réponse à la journalisation "problème"


À l'intérieur de la boucle pour la boucle, il y a une demande de volley où je dois transmettre cette valeur de hashset. Je ne peux pas sortir de la boucle. Parce que la demande de volley doit être bouclée


Vous faites une demande de réseau pour chaque élément individuel que vous avez dans le tableau ??? Pourquoi?? Si votre tableau a 100 articles, vous allez faire des appels individuels individuels


Oui je le savais. Mais dans mon cas, je dois apporter un autre appel d'API à l'intérieur de la boucle, car les données du premier appel d'API arrivent comme ID. De plus, nous ne pouvons pas utiliser la valeur de réponse hors de la méthode de réponse. Quelle est la solution appropriée


Vous voudrez peut-être examiner RX Java afin que vous puissiez chaîner des appels un peu plus facilement. Mais même alors, vous ferez toujours autant d'appels que ce que vous avez dans la boucle. Vous devriez rechercher un appel réseau qui accepte un ensemble important avec plusieurs valeurs au lieu d'un appel qui semble accepter un ensemble avec 1 valeur. Si vous continuez le chemin actuel, votre demande aura une performance affreuse.



1
votes

Vous créez une nouvelle instance de hashset chaque fois que votre boucle traverse. Vous vous retrouvez avec autant de hashsets que de nombreux éléments de tableau.


0 commentaires

0
votes

Faites-le comme: xxx

ou si votre tableau est list , vous pouvez appeler directement xxx


0 commentaires