Warum verwenden so viele Methoden Collection statt Iterable?

8

Mit C # habe ich die IEnumerable<T> -Schnittstelle geliebt. Es gibt viele Fälle, in denen das alles ist, was Sie ausgeben und aufnehmen möchten. Außerdem ist es in der .Net-Bibliothek nützlich. Sie haben zum Beispiel einen Konstruktor für die Klasse List<T> , der ein IEnumerable<T> übernimmt.

Ich muss im Moment mit Java arbeiten, und natürlich wollte ich die äquivalente Schnittstelle Iterable<T> verwenden. Es sieht jedoch nicht so aus, als könnte ich es überall benutzen. Alles scheint stattdessen die erweiterte Collection<T> -Schnittstelle zu verwenden. Warum ist das?

Als Beispiel haben Sie den ArrayList<T> -Konstruktor, der ein Collection<T> :

benötigt
  

Erstellt eine Liste mit den Elementen der angegebenen Sammlung in der Reihenfolge, in der sie vom Iterator der Sammlung zurückgegeben werden.

Warum nimmst du nicht einfach ein Iterable<T> ?

    
Svish 11.05.2011, 11:24
quelle

3 Antworten

5

Iterable wurde nur in Java 5 hinzugefügt. Dies bedeutet, dass ältere Methoden (die meisten von ihnen) Sammlungen verwenden. Sogar neuere Methoden, die Iterable nehmen könnten, haben es nicht benutzt. : (

Ich denke, das Problem ist, dass die meisten Iterablen Sammlungen sind.

    
Peter Lawrey 11.05.2011, 11:28
quelle
2
  

Als Beispiel haben Sie den ArrayList-Konstruktor, der eine Collection

übernimmt

Die vorhersehbare Größe ist gut, insb. für eine ArrayList (es verwendet toArray (), um das zugrunde liegende Objekt [])

zu erstellen
  

Erstellt eine Liste mit den Elementen der angegebenen Sammlung in der Reihenfolge, in der sie vom Iterator der Sammlung zurückgegeben werden.

Schöne Sonne war faul, die Dokumente erneut zu aktualisieren, es verwendet überhaupt keinen Iterator; Eigentlich selbst lese ich die Doku fast nie, da sie oft entweder irreführend oder einfach nur falsch sind.

Sie können auch einfach ein Iterable in eine Collection einfügen, indem Sie AbstractCollection ableiten (dem nur size () und iterator () fehlen)

Iterable wurde hauptsächlich eingeführt, um foreach construct anzupassen.

    
bestsss 11.05.2011 11:34
quelle
0

Weil sie mehr mit der Sammlung machen wollen, als nur darüber zu iterieren?

    
EJP 12.05.2011 00:17
quelle

Tags und Links