3

IteratorJavaライブラリにもいくつかのシリーズを列挙するインターフェースがありますが、 and とは少し別のロジックに従いますEnumerationか? つまり、次の要素に到達したかどうかを示すbooleanonを返す必要があり、現在の要素を返すメソッドが必要ですか?next()getCurrent()

アップデート

Iterator.next()IEnumerator.Current前者は各呼び出しでイテレータを進めますが、後者はそうではないため、 は と同等ではありません。

更新 2

独自の機能を備えた独自のクラスを設計しています。私の質問は、「有能な」アナロジーを見つけるためのものでした。からのサンプルC#は単なるサンプルであり、 からC#に何かを翻訳しているわけではありませんJava

4

3 に答える 3

3

これは Guava のように聞こえPeekingIteratorます。Iteratorでプレーンを飾ることができますIterators.peekingIterator

于 2013-03-21T22:57:30.637 に答える
1

Java では別のアプローチを使用する必要があります。たとえば、この C# コードの代わりに:

Dictionary<int?, int?> m = new Dictionary<int?, int?>();
for (IEnumerator<KeyValuePair<int?, int?>> it = m.GetEnumerator(); it.MoveNext();)
{
    Console.Write(it.Current.Key);
    Console.Write(it.Current.Value);
}

以下を使用する必要があります。

java.util.HashMap<Integer, Integer> m = new java.util.HashMap<Integer, Integer>();
for (java.util.Iterator<java.util.Map.Entry<Integer, Integer>> it = m.entrySet().iterator(); it.hasNext();)
{
    java.util.Map.Entry<Integer, Integer> current = it.next();
    System.out.print(current.getKey());
    System.out.print(current.getValue());
}

通常、C# では 'foreach' ループを使用するため、この特定の変換に対する需要は高くないはずです。これは、よりクリーンに Java に変換されます。

于 2013-03-21T22:52:57.000 に答える
-1

HashSetとのような標準の具象 Collection クラスを使用するArrayListと、イテレータにアクセスできます。

メソッド: を呼び出すcollection.hasNext()と boolean が返されますが、ポインターは進みません。これにより、読み取りを試みる必要があるかどうかを判断できますcollection.next()

例:

Set<String> numbers = new HashSet<>();

// fill in set...

while (numbers.hasNext()) {
    System.out.println(numbers.next());
}

もちろん、for-each 構文を使用してコレクションを反復処理することもできます。

for (String s : numbers) {
    System.out.println(s)
}
于 2013-03-21T22:06:58.247 に答える