J'ai une carte aussi syntaxique que Map<String, String> testMap = new HashMap<String, String>();
. Dans cette carte, il peut y avoir 1000 données.
Lorsque mon application requiert une nouvelle liste de données, je dois effacer la carte. Mais lorsque j'ai vu le code de Map.clear() comme étant
/**
* Removes all of the mappings from this map.
* The map will be empty after this call returns.
*/
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
Je me rends compte que la méthode claire tourne en boucle pendant n fois (où n est le nombre de données dans la carte). J'ai donc pensé qu'il pouvait y avoir un moyen de redéfinir cette Map en tant que testMap = new HashMap<String, String>();
et les cartes précédemment utilisées seront collectées à la poubelle.
Mais je ne suis pas sûr que ce soit une bonne solution. Je travaille sur une application mobile.
Pouvez-vous me guider ?
3 votes
Il y a longtemps que cette question a été postée, mais quoi qu'il en soit, Google continue de nous guider vers elle. Donc un autre avantage d'utiliser clear plutôt que new. Vous serez en mesure de déclarer la carte comme finale et ainsi le compilateur sera en mesure de détecter les bugs de programmation gratuitement. Pour d'autres types de structures, "final" supprimera également la charge de l'allocation d'une nouvelle mémoire, ce qui rendra notre code (beaucoup) plus rapide.