Ho una semplice domanda di riscossione. Ho un oggetto Set<String>
. Voglio un'enumerazione delle stringhe in quel set. Qual è il modo più pulito/migliore per farlo?Java: Enumerazione dal set <String>
risposta
EDIT: Non è necessario scrivere il proprio (anche se lascerò l'implementazione sotto per i posteri) - vedere la risposta di Kevin Bourrillion per quella nel JDK.
Se davvero bisogno di un'enumerazione, potrebbe potrebbe utilizzare:
Enumeration<String> x = new Vector(set).elements();
Sarebbe meglio usare Iterable<E>
se possibile anche se ...
Un'alternativa migliore è scrivere una classe di piccolo wrapper intorno a Iterator<E>
. In questo modo non c'è bisogno di prendere una copia solo per trovare un imlementation di 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: cura di commentare? –
Anche io ho votato. Non è necessario scrivere la propria implementazione quando il JDK ha un metodo di utilizzo statico che lo fa per te, come sottolineato da Kevin Bourrillion. – Snekse
@ Snekse: se il precedente downvoter avesse detto tanto, sarebbe stato utile. Non posso cancellare la mia risposta ora perché è accettata, ma posso indicare Kevin ... –
Supponendo che si intende di censimento nel senso matematico il modo più pulito per farlo è attraverso un ciclo for, applicabile a qualsiasi classe che implementa Iterable
:
Set<String> strs = ...
for (String s : strs) {
...
}
Se davvero bisogno di un Enumeration
si potrebbe implementare una classe adattatore per avvolgere il Iterator
restituito dalla chiamata iterator()
. Esiste una classe adattatore nella libreria delle raccolte di Apache: IteratorEnumeration
.
Oppure si potrebbe usare libreria di Guava di Google:
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());
Downvoter ...cura di commentare? – Adamski
java.util.Collections.enumeration(set)
Javadoc
Restituisce un'enumerazione sulla raccolta specificato. Ciò fornisce l'interoperabilità con le API legacy che richiedono un'enumerazione come input .
Ok, mi rendo conto che la mia risposta è concisa, ma è perché è tutto ciò che ha davvero bisogno di essere detto. :) Questo metodo è nel JDK e fa esattamente * ciò che il poster sta chiedendo. È strano per me che sarebbe stato classificato per ultimo. –
Elemento Java efficace 47: conoscere e utilizzare le librerie – Ray
- 1. Enumerazione Java vs Iterator
- 2. Come posso creare IntStream dal set <Integer>?
- 3. random.choice dal set? python
- 4. Delphi for..in ordine di enumerazione del set di loop
- 5. È OK usare == su enumerazione in Java?
- 6. Voci di incremento automatico enumerazione Java?
- 7. Set test di Java set Proprietà manifest
- 8. Differenza tra enumerazione e enumerazione
- 9. enumerazione Ambito
- 10. Conversione implicita dal tipo di enumerazione "UIBarButtonSystemItem" al diverso tipo di enumerazione "UIBarButtonItemStyle" - iPad - iOS5
- 11. Converti Set <String>
- 12. Enumerazione Scala ValueSet.isEmpty slow
- 13. Python rimuove l'insieme dal set
- 14. Enumerazione di unità esterne
- 15. Java mockito mock set
- 16. Extension sulla enumerazione, non un'istanza di enumerazione
- 17. Converti Set <Map.Entry <K, V>> a HashMap <K, V>
- 18. Casting Map <Integer, Set <Object>>
- 19. Che cosa significa "NSBinarySearchingFirstEqual = (1UL << 8)" in una definizione di enumerazione?
- 20. Java Generics <this??>
- 21. Enumerazione WCF
- 22. Haskell enumerazione
- 23. SET JAVA_HOME per riflettere java versione java
- 24. Entity Framework: Quando utilizzare Set <>
- 25. Valore vuoto enumerazione MySQL
- 26. java swing JTextField set PlaceHolder
- 27. Java, scorrendo set di risultati
- 28. Selezionare TOP 1 dal set di risultati
- 29. Utilizzo di enumerazione Java 5 come variabili di velocità
- 30. Enumerazione Combinazioni di elementi K utilizzando Java 8
Enumerazione come in java.util.Enumeration? Qualche ragione per non usare java.util.Iterable invece? –
sì ... perché sto eseguendo l'override di un metodo che restituisce specificamente un'enumerazione. –
Charlotte
Penso che dovresti accettare la risposta più votata. –