私は単純なコレクションの質問があります。私はSet<String>
オブジェクトを持っています。私はそのセットの文字列の列挙が欲しいです。それについて最善の方法は何ですか。Java:セットからの列挙<String>
答えて
編集:自分で書く必要はありません(私は後世のために実装を残していますが).JDKにあるKevin Bourrillionの答えを参照してください。
あなた本当にが使用できる可能性があり、列挙が必要な場合:より良い代替手段がある...
Enumeration<String> x = new Vector(set).elements();
をすべてで可能な場合はいえIterable<E>
を使用する方が良いでしょう
をIterator<E>
の周りに小さなラッパークラスを書く。あなただけEnumeration<E>
のimlementationを見つけるために、コピーを取る必要はありませんその方法:あなたがこれを行うにはクリーンな方法は、forループを経由している数学的な意味での列挙を意味すると仮定すると、
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:コメントしますか? –
私はちょうど投票されました。 JDKに静的なutilメソッドがある場合は、独自の実装を書く必要はありません。Kevin Bourrillionによって指摘されています。 – Snekse
@Snekse:もし前のdownvoterがそれほど多く言っていたなら、それは助けになったでしょう。私はそれが受け入れられたものとして私の答えを削除することはできませんが、私はケビンの指摘することができます... –
、いずれにも適用Iterable
を実装するクラス:
Set<String> strs = ...
for (String s : strs) {
...
}
あなたが本当にEnumeration
が必要な場合は、iterator()
を呼び出すことによって返さIterator
をラップするアダプタクラスを実装することができます。 Apacheコレクション・ライブラリーにアダプター・クラスがあります:IteratorEnumeration
。
それとも、Googleのグアバライブラリを使用することができます。
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());
Downvoter ...コメントする気に? – Adamski
java.util.Collections.enumeration(set)
Javadocは
指定されたコレクションの列挙を返します。これにより、 の入力として列挙が必要な従来のAPIとの相互運用性が提供されます。
わかりました。私の答えは簡潔ですが、それは本当に言われている必要があるからです。 :)このメソッドはJDKにあり、ポスターが求めるものを正確に*行います。私はそれが最後にランクされるのは不思議です。 –
有効なJava Item 47:ライブラリを知り、使用する – Ray
- 1. Javaジェネリック:セットとセット<Object>
- 2. Javaの列挙型クラス
- 3. JavaクライアントアプリケーションからHTTPサーバー上のディレクトリ/ファイルを列挙する
- 4. 列挙型と辞書<列挙型、動作>
- 5. Java Enums:列挙された値をクラス<? extends Enum>
- 6. Javaの列挙型は、私は列挙型を持つ条約
- 7. だから、列挙型
- 8. java - 列挙型質問
- 9. JavaからScala列挙を渡す方法
- 10. Hibernateで列挙型のセットをマップするには?
- 11. C++の観点からの列挙
- 12. Javaの列挙型の継承
- 13. パスジェネリック型の列挙型を(Java)の
- 14. Javaのパブリック列挙法の目的
- 15. Javaでの列挙型の逆シリアル化
- 16. のJavaのジェネリック列挙サブタイピング・インターフェース
- 17. は、なぜ、すべての列挙型は、列挙型<e>
- 18. 列挙型からリンクテーブルへの変更
- 19. 列挙型<?拡張インターフェース>
- 20. System.Lazy <T>とSystem.Threading.LazyThreadSafetyMode列挙
- 21. 構文<(うち<(< "TKEY、TValue>)>)> .. :: ..列挙子
- 22. Javaのジェネリック:列挙型とインタフェース
- 23. 制御フロー列挙型のJavaパーサー
- 24. Java:列挙型の汎用メソッド
- 25. Java:シリアルポートの列挙とforループ
- 26. のJava列挙とループ質問
- 27. Javaの非静的な列挙型
- 28. Javaの列挙型:概念疑い
- 29. DBの列挙型または列挙型の列挙型
- 30. Javaジェネリックとセットのセット
java.util.Enumerationの列挙型ですか?代わりにjava.util.Iterableを使用しない理由は何ですか? –
はい、私は具体的にEnumerationを返すメソッドをオーバーライドしているためです。 –
Charlotte
私は代わりに最も投票された答えを受け入れるべきだと思います。 –