Wie finde ich die Größe eines Iterable Object? [Duplikat]

7

Ich schreibe gerade einen MR-Job. Aber ich stehe mit einem Problem fest, das sich auf ein Iterable-Objekt bezieht. Ich muss seine Größe finden. Ich habe es auf ein List-Objekt geworfen, aber das war falsch. (List kann in Iterable umgewandelt werden, kann aber keine Umkehrung ausführen.) Es gibt einen anderen Weg, d. H. Einen Iterator für das Objekt zu verwenden und einen Zähler für jeden Wert zu inkrementieren. Aber das ist keine optimale Lösung. Kann jemand einen besseren Weg vorschlagen?

Bitte helfen Sie mir. Vielen Dank im Voraus.

    
Sneha Parameswaran 10.07.2012, 11:56
quelle

3 Antworten

15

Die Schnittstelle Collection bietet eine Methode size() und erweitert Iterable . Wenn Ihr Iterator zufällig aus einer Sammlung stammt, können Sie ihn nach seiner Größe fragen, sonst haben Sie kein Glück, Sie müssen einfach bis zum Ende iterieren.

Hier ist ein Hack, der dies implementiert:

%Vor%     
casablanca 10.07.2012 13:55
quelle
5

Sie müssen den Iterator durchlaufen und die Elemente zählen. Zum Beispiel,

%Vor%

Dies ist nicht sehr sauber, aber Iterator wird mit dem Zweck der Iteration verwendet und bietet keine spezifische API dafür.

Aber wo wird der Iterator erstellt? Wenn es von einem anderen Objekt kommt, zum Beispiel einem Collection-Objekt, können Sie die Größe der Quelle und nicht den Iterator selbst bestimmen.

    
Safime 10.07.2012 13:59
quelle
0

Iterator hat keine size (), aber einige der Collections, von denen Iterator abgeleitet wurde, haben eine size (), wie java.util.LinkedList.size (). Daher müssen Sie möglicherweise in einigen Fällen iterieren.

    
Praveen Sripati 10.07.2012 13:56
quelle

Tags und Links