Je voulais juste faire un commentaire sur la accepté de répondre, mais elle a eu trop funky (je déteste ne pas avoir des sauts de ligne)
ah, si la différence est que dans
général, la Carte dispose de certaines méthodes
associé avec elle. mais il y a
différentes façons ou la création d'une carte, par exemple
comme une table de hachage, et ces différentes manières
fournir des méthodes uniques que tous les
les cartes ont.
Exactement, et vous voulez toujours utiliser la plus générale de l'interface, vous pouvez éventuellement. Envisager ArrayList vs LinkedList. Énorme différence dans la façon dont vous les utilisez, mais si vous utilisez "Liste", vous pouvez basculer entre eux facilement.
En fait, vous pouvez remplacer le côté droit de l'initialiseur, avec une dynamique d'instruction. comment quelque chose comme cela:
List collection;
if(keepSorted)
collection=new LinkedList();
else
collection=new ArrayList();
De cette façon, si vous allez remplir la collection avec un tri d'insertion, vous devez utiliser une liste chaînée (le tri par insertion dans un tableau la liste est criminel.) Mais si vous n'avez pas besoin de garder triés et sont juste à la précédente, vous utiliser une ArrayList (Plus efficace pour d'autres opérations).
C'est un assez gros stretch ici parce que les collections ne sont pas le meilleur exemple, mais dans OO conception de l'un des concepts les plus importants est l'aide de l'interface de façade pour accéder à des objets différents, avec exactement le même code.
Edit de répondre à un commentaire:
Comme pour votre carte commentaire ci-dessous, Oui à l'aide de la "Carte" de l'interface restreint aux seuls méthodes, à moins que vous lancez la collection retour de la Carte de HashMap (ce qui va à l'encontre de l'objectif).
Souvent, ce que vous allez faire est de créer un objet et de le remplir à l'aide de ce type spécifique (HashMap), dans une sorte de "créer" ou "initialiser" la méthode, mais la méthode renverra une "Carte" qui n'a pas besoin d'être manipulé comme une table de hachage.
Si jamais vous avez à jeter par la manière, vous utilisez probablement une mauvaise interface ou votre code n'est pas structuré assez bien. Notez qu'il est acceptable d'avoir une partie de votre code de le traiter comme une "table de hachage", tandis que l'autre considère comme une "Carte", mais cela devrait couler "vers le bas". de sorte que vous ne sont jamais de casting.
Notez également la semi-aspect propre de rôles indiqué par les interfaces. Une LinkedList fait une bonne pile ou file d'attente, une ArrayList qui fait un bon stack, mais une horrible file d'attente (encore une fois, une suppression entraînerait un déplacement de l'ensemble de la liste), de sorte LinkedList implémente l'interface d'Attente, ArrayList ne le fait pas.