Tengo una pregunta de colecciones simple. Tengo un objeto Set<String>
. Quiero una enumeración de las cadenas en ese conjunto. ¿Cuál es la mejor/más limpia forma de hacerlo?Java: Enumeración del conjunto <String>
Respuesta
EDITAR: No es necesario que escriba la suya (aunque dejaré la implementación a continuación para la posteridad) - vea la respuesta de Kevin Bourrillion para la del JDK.
Si realmente necesita una enumeración, podría podría utilizar:
Enumeration<String> x = new Vector(set).elements();
Sería mejor utilizar Iterable<E>
si es posible, aunque ...
Una mejor alternativa es para escribir una pequeña clase de contenedor alrededor de Iterator<E>
. De esa manera usted no tiene que tomar una copia sólo para encontrar un imlementation de Enumeration<E>
:
import java.util.*;
class IteratorEnumeration<E> implements Enumeration<E>
{
private final Iterator<E> iterator;
public IteratorEnumeration(Iterator<E> iterator)
{
this.iterator = iterator;
}
public E nextElement() {
return iterator.next();
}
public boolean hasMoreElements() {
return iterator.hasNext();
}
}
public class Test {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
Enumeration<String> x = new IteratorEnumeration<String>(set.iterator());
}
}
@Downvoter: ¿me gustaría comentar? –
Acabo de votar también. No es necesario que escriba su propia implementación cuando el JDK tiene un método de utilidad estática que lo hace por usted, como lo señaló Kevin Bourrillion. – Snekse
@Snekse: Si el anterior downvoter hubiera dicho tanto, hubiera sido útil. No puedo eliminar mi respuesta ahora, ya que es la aceptada, pero puedo señalar la ... –
Suponiendo que quiere decir enumeración en el sentido matemático de la forma más limpia de hacer esto es a través de una, aplicable para el bucle a cualquier clase que implementa Iterable
:
Set<String> strs = ...
for (String s : strs) {
...
}
Si realmente necesita una Enumeration
se podría implementar una clase adaptador para envolver el Iterator
devuelta al llamar iterator()
. Hay una clase de adaptador en la biblioteca de colecciones de Apache: IteratorEnumeration
.
O usted podría utilizar la biblioteca de guayaba de Google:
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());
Downvoter ...importa comentar? – Adamski
java.util.Collections.enumeration(set)
Javadoc
Devuelve una enumeración más de la colección especificada. Esto proporciona interoperabilidad con API heredadas que requieren una enumeración como entrada .
Ok, me doy cuenta de que mi respuesta es escueta, pero eso es porque eso es todo lo que se necesita decir. :) Este método está en el JDK y hace * exactamente * lo que el póster está pidiendo. Es extraño para mí que sea el último clasificado. –
Artículo Java eficaz 47: Conozca y use las bibliotecas – Ray
- 1. Convierta el conjunto <Integer> en el conjunto <String> en Java
- 2. Tratar Enumeración <T> como Iterator <T>
- 3. Complejidad del tiempo del conjunto en Java
- 4. enumeración extensible de Java
- 5. Java herencia enumeración
- 6. Java enumeración mejores prácticas
- 7. Enumeración Java vs iterador
- 8. Enumeración de Java enum
- 9. Eliminar elementos del conjunto en Java
- 10. enumeración C-como en Java
- 11. ¿Herencia de enumeración en Java?
- 12. Java enumeración establecer ordinales personalizados
- 13. Multiplexación del futuro <> en Java
- 14. Enumeración del diccionario en C#
- 15. Orden de enumeración del diccionario
- 16. métodos get() en Java enumeración tipo
- 17. Python Extraiga el conjunto del conjunto
- 18. Uso del conjunto de resultados en el programa Java
- 19. Java, un bucle a través del conjunto de resultados
- 20. Java: quitar segmento Continious de ceros del conjunto de bytes
- 21. Java: Enumeración de parámetros en el método
- 22. forma de repetición de enumeración en java
- 23. Cómo utilizar enumeración con valores en Java
- 24. gama de Java de enumeración valora
- 25. Java Enum haciendo referencia a otra enumeración
- 26. Prolongación de una enumeración en Java
- 27. Java: enumeración genérica en el parámetro método
- 28. Get enumeración de atributos enumeración
- 29. permutación del conjunto
- 30. Región del conjunto MKMapView
Enumeración como en java.util.Enumeration? ¿Alguna razón para no usar java.util.Iterable en su lugar? –
sí ... porque estoy anulando un método que devuelve específicamente una Enumeración. –
Charlotte
Creo que debería aceptar la respuesta más votada. –