2013-10-25 9 views
24
Map<String, ArrayList<Pair<String, Integer>>> k = new Map<String, ArrayList<Pair<String, Integer>>>(); 

Diese Zeile ist in meinem Code. Ich möchte eine Map instanziieren, die einen String und dann eine ArrayList aus Strings und Ganzzahlpaaren enthält.Karte kann nicht instanziiert werden ... warum nicht?

Pair ist eine Klasse, die ich geschrieben habe, die in meinem Paket ist.

erhalte ich „Kann nicht die Art Map instanziiert >>();

Warum nicht mir vernünftig erscheint ...

+0

Umsetzung Was 'Map' ist ..? Eine Klasse, eine Schnittstelle, eine Enumeration? –

+3

Die eingebaute 'Map' ist eine Schnittstelle. Wählen Sie eine implementierende konkrete Klasse auf der rechten Seite. – rgettman

+0

Können Sie eine Schnittstelle angeben? –

Antwort

42

Der eingebaute Map ist eine Schnittstelle, die nicht Sie instanziiert werden kann.

  • ConcurrentHashMap
  • HashMap
  • : kann zwischen vielen Umsetzung konkreter Klassen auf der rechten Seite Ihres Einsatzes, wie wählen
  • LinkedHashMap
  • TreeMap

und viele andere. Die Javadocs for Map listet viele direkte konkrete Implementierungen auf.

7

Schnittstellen kippe intantiated werden Sie müssen einige konkrete Klasse verwenden, um die Schnittstelle Probieren Sie etwas wie dieses

Map<String, ArrayList<Pair<String, Integer>>> k = new HashMap<String, ArrayList<Pair<String, Integer>>>();