Comment Itérer sur un Jeu/HashSet sans un Itérateur?

Comment puis-je effectuer une itération sur un Set/HashSet sans le suivant?

Iterator iter = set.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
}
  • Êtes-vous en train d'essayer d'éviter l'utilisation d'un itérateur, ou vous avez tout simplement pas envie de le voir dans votre code source?
  • Vous pouvez rendre le code plus court et plus, mais vous devez utiliser un Itérateur. Est-il une raison pour laquelle vous voulez l'éviter?
  • Quelle est votre raison de vouloir éviter les structures de la langue pour le but que vous voulez accomplir?
  • Juste pour le record et que l'explication de pourquoi pour éviter l'itérateur: je suis actuellement confronté à cette question dans un jeu Android écrite en Java. Actuellement, j'utilise un HashSet pour le stockage des auditeurs qui ont besoin d'être régulièrement informé sur les événements. Cependant, à plusieurs reprises itération collections entraîne de lourdes garbage collector activité qui peut fardeau de la boucle de jeu. Et c'est un no-go dans un jeu Java. Je vais réécrire ces pièces.
  • avez-vous quelque chose de plus à lire au sujet de votre réclamation que les itérateurs cas lourds garbage collector activité?
  • Je parle seulement d'un jeu Java perspective de développement où vous voulez éviter GC pendant le jeu régulier de l'état des mises à jour à tous les coûts. Les itérateurs sont que temporairement des objets utiles puisque vous ne pouvez pas réinitialiser le début, donc ils obtiennent recréé à chaque itération de l'appel de méthode (voir ArrayList.java source par exemple). Si elle est utilisée dans une boucle de jeu pour réitérer scène des objets et en considérant au moins 30 mises à jour par seconde, vous vous retrouvez avec au moins 60 (scène est généralement répété deux fois par cycle) itérateur objets par seconde dans la mémoire d'attente pour le GC. Qui a un grand impact sur Android.
  • On devrait peut-être choisir un plus adéquate de la structure de données dans ce cas? Un jeu n'est pas conçu pour parcourir de manière efficace. Pourquoi ne pas utiliser une ArrayList et itérer dessus avec un standard pour la boucle? Aucune autre itérateurs sont créés, l'accès en lecture est très rapide.
  • ensemble.forEach(Système d'.out::println);
  • Si vous voulez une collection sans doublons qui peuvent ajouter de la en O(1) et pourtant vous avez besoin pour itérer sur les il souvent?

InformationsquelleAutor user1621988 | 2012-09-17