Così ho lavorato abbastanza a lungo con l'API Neo4j, e ho notato che quasi sempre avranno funzioni che restituisconoQuando restituire Iterable <String> anziché List, Set, Collection?
Iterable<Class>
mentre io ho sempre capito che è meglio tornare uno dei Set, List o Raccolta a meno che non si abbia una ragione convincente per fare diversamente. Impostare per indicare all'utente che non avrà mai elementi duplicati, Elenco quando l'ordine è importante o contiene duplicati, o Raccolta quando non si dispone di una politica.
Preferisco questi a Iterable in quanto hanno utilità utili come .contains(), .add() ecc. Ho trovato che molto spesso devo scrivere codice per convertire un Iterable in una Collection.
Quindi la mia domanda è: mi manca qualcosa di importante? C'è una buona ragione per usare Iterable su Collection? Quando lo faresti? Ovviamente, i ragazzi di Neo4j sembrano essere dei programmatori di prim'ordine, quindi presumo che abbiano una ragione per questo, ma non riesco a vederlo.
Sì, si tratta principalmente della valutazione pigra dei risultati. Le classi di raccolta sono tutte impazienti. In realtà Iterable è solo zucchero sintattico per un 'Interator' per permettere di usare il singolo iteratore all'interno di un foreach –