Je cherche une collection cyclique en Java. J'ai quelques joueurs dans Array
(ils attendent leur tour) mais je voudrais changer Array
à la collection cyclique donc il sera plus facile d'obtenir le prochain joueur. (Je sais comment cela peut être fait autrement, mais je voudrais utiliser collection cyclique déjà préparée en Java).Existe-t-il une liste cyclique, une file d'attente, tout ce qui est disponible dans les bibliothèques Java standard?
Répondre
Vous pouvez transformer n'importe quel Iterable
en une collection cyclique. Continuez à demander Iterator
s pour toujours.
class Ring<T> implements Iterable<T> {
// Source of all Iterators.
final Iterable<T> it;
// Current Iterator we are consuming.
Iterator<T> i;
public Ring(Iterable<T> it) {
this.it = it;
i = it.iterator();
}
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
@Override
public boolean hasNext() {
// There's always a next for a Ring.
return true;
}
@Override
public T next() {
if (!i.hasNext()) {
// Iterator is exhausted - make a new one!
i = it.iterator();
}
return i.next();
}
};
}
}
public void test() {
Ring<String> r = new Ring<>(Arrays.asList("One", "Two", "Three"));
int printed = 0;
for (String s : r) {
System.out.println(s);
if (++printed > 10) {
break;
}
}
}
Notez qu'il existe un cas de bord étrange lorsque le enveloppé Iterable
délivre itérateurs vides mais je laisse ce détail à l'étudiant.
Est-ce seulement moi qui lis "en faire un nouveau!" comme un petit enfant en disant "allons avoir plus de gâteau!"? –
@AndrewG - Non! :) Moi aussi. – OldCurmudgeon
- 1. Est-ce que C++ ont des bibliothèques standard for Common File Utilities
- 2. Comment décharger les bibliothèques standard Java
- 3. En ce qui concerne les bibliothèques Eclipse
- 4. Est-ce une palette de couleurs standard?
- 5. Une liste complète des propriétés spéciales de double-underscore dans les bibliothèques python standard?
- 6. Est-ce que ce qui suit indique une mauvaise conception?
- 7. Qu'est-ce qui est disponible pour la musique livecoding?
- 8. Ce qui devrait être dans le fichier build.gradle pour prendre en charge les importations des bibliothèques standard groovy
- 9. Comment est-ce que j'analyser une date standard en GMT?
- 10. Autorisations java dans les bibliothèques
- 11. Bibliothèques Standard Flash?
- 12. passant une liste qui est une classe génère l'erreur, liste qui est une chaîne ne
- 13. Python en utilisant ctypes les bibliothèques partagées qui pointent vers des bibliothèques partagées non standard
- 14. Comment est-ce que j'analyse une chaîne dans une liste de commandes dans Java?
- 15. Tout ce qui correspond
- 16. android - ce qui est un sondage natif de file d'attente de messages une fois dans Android?
- 17. Est-ce que tout dans la bibliothèque standard traitera les chaînes comme unicode dans Python 3.0?
- 18. C bibliothèques non-standard
- 19. Qu'est-ce que ACRA pour Java standard?
- 20. Existe-t-il une version à plusieurs caractères de strchr() dans les bibliothèques C standard?
- 21. Partage d'un pointeur FILE entre les bibliothèques
- 22. Est-ce une solution viable à une liste dans Memcached?
- 23. Magento: ce qui change lorsqu'un produit est indexé disponible/indisponible?
- 24. trouver des doublons entre ma liste et ce qui est dans une base de données
- 25. Est-ce que quelqu'un travaille sur une bibliothèque standard de haut niveau pour C++?
- 26. Trouver tout ce qui est pas entre les balises spécifiques
- 27. En ce qui concerne une liste et une carte
- 28. Comment créer une expression rationnelle qui attire tout ce qui est pas un nombre pur
- 29. Comment nettoyer une chaîne en supprimant tout ce qui est pas une lettre en PHP
- 30. Y at-il une classe pour les valeurs paresseusement calculées quelque part dans les bibliothèques Java populaires/standard?
Avez-vous considéré une file d'attente? Mais sinon, non, une collection cyclique n'est pas dans les bibliothèques Java standard pour autant que je sache. – awksp
@ user3580294 La file d'attente n'est pas cyclique autant que je me souvienne. – Yoda
apache commons collection a un. – njzk2