Pourquoi tant de méthodes utilisent-elles Collection plutôt qu’itérable?

Avec C #, j’ai appris à aimer l’interface IEnumerable . Il y a beaucoup de cas où c’est tout ce que vous voulez donner et accepter. De plus, c’est utile dans la bibliothèque .Net. Vous avez par exemple un constructeur sur la classe List qui prend un IEnumerable .

Je dois travailler avec Java pour le moment, et je voulais naturellement utiliser l’interface équivalente Iterable . Cependant, il ne semble pas vraiment que je puisse l’utiliser n’importe où. Tout semble utiliser l’interface étendue Collection place. Pourquoi est-ce?

Par exemple, vous avez le constructeur ArrayList qui prend une Collection :

Construit une liste contenant les éléments de la collection spécifiée, dans l’ordre dans lequel ils sont renvoyés par l’iterator de la collection.

Pourquoi ne pas simplement prendre un Iterable place?

Iterable n’a été ajouté qu’en Java 5. Cela signifie que les méthodes les plus anciennes (la plupart d’entre elles) utilisent des collections. Même les nouvelles méthodes qui pourraient prendre Iterable ne l’ont pas utilisé. 🙁

Je pense que le problème est que les plus intéressants sont les collections.

Par exemple, vous avez le constructeur ArrayList qui prend une collection

Avoir une taille prévisible est bon, esp. pour un ArrayList (il utilise toArray () pour construire son object sous-jacent [])

Construit une liste contenant les éléments de la collection spécifiée, dans l’ordre dans lequel ils sont renvoyés par l’iterator de la collection.

Lovely Sun était paresseux pour mettre à jour à nouveau la documentation, il n’utilise pas d’iterator du tout; En fait, je ne lis presque jamais les documents car ils ont souvent tendance à être trompés ou tout simplement faux.

Vous pouvez également adapter un Iterable à une Collection en sous-classant AbstractCollection (qui ne manque que de taille () et d’iterator () facilement implémenté).

Iterable a été introduit principalement pour se conformer à foreach construction.

Parce qu’ils veulent permettre de faire plus avec la collection que de simplement la parcourir?