06/06/2023 - biagio-23 ha scritto:
Giusto?
Sì.
06/06/2023 - biagio-23 ha scritto:
Che differenza ci sono sostanzialmente tra una LinkedList e un'ArrayList , e tra una Collection(so che è il super-tipo) e una List?(so tipo che List aggiunge dei metodi).
ArrayList e LinkedList sono due implementazioni diverse di oggetti che rappresentano delle liste (implementano List). ArrayList sostanzialmente è implementata come array, mentre LinkedList come lista doppiamente linkata. Leggi la loro documentazione:
Collection è un'interface da cui deriva List (e altre) e il suo scopo è modellare tutto ciò che rappresenta una “collezione” di elementi (liste, code, insiemi, mappe, ecc.). List è una sua specializzazione e rappresenta tutto ciò che è una lista (liste linkate, liste basate su array, vettori, ecc).
Ovviamente ogni specializzazione aggiunge dei metodi che hanno senso per il tipo di specializzazione o che devono comportarsi in modo diverso a seconda della specializzazione. Esempio: il metodo add(int, E) di List consente l'aggiunta di un elemento ad una posizione specifica della lista. Non restituisce alcun valore perchè l'inserimento di un elemento è sempre possibile. Diverso il caso di Set: il suo metodo add(E) deve restituire un boolean che indica se l'elemento è stato effettivamente inserito (perchè non era già presente) o meno (perchè già presente nell'insieme).
Anche List possiede un metodo add(E) che restituisce un boolean, ma se guardi la documentazione è scritto che restituisce sempre true (per il motivo visto prima: è sempre possibile inserire un elemento in una lista) e che è stato implementato in quel modo perchè così è definito nella sua super-interface Collection.