2014-12-08 5 views
6

Ich bin auf der Suche nach einer Sammlung, die eine Art Liste wäre, die Lücken erlaubt. Die Ziele sind:Gibt es eine Listenimplementierung, die Lücken zulassen würde?

  • jedes Element einige Index in der Auflistung hat, die sinnvoll ist.
  • die Sammlung ist spärlich und nicht kontinuierlich; Seine Größe sollte die Anzahl der richtigen Elemente zurückgeben, daher würde die Problemumgehung der Initialisierung mit null nicht funktionieren.
  • subList Verfahren ist wünschenswert, um Zugang zu Unterlisten entsprechend indizieren Intervallen

Probenanwendungsfall:

List<Integer> list = /* ? */; 
list.add(0,5); 
list.add(1,4); 
list.add(5,3); 
for(Integer i : list) 
{ 
    System.out.print(i + " "); 
} 
/* desired output : "5 4 3 "*/ 
+1

Ihre Anforderung für die 'size' Methode Konflikte mit dem' list' Schnittstelle. Die Methode 'get' auf' List' * muss * eine 'IndexOutOfBoundsException' des Indexes < 0 or >' size() 'auslösen, damit Ihre' size() 'Methode * * das höchste indexierbare Element zurückgibt, mit dem gesucht werden kann die 'get()' Methode. –

Antwort

5

einen Map<Integer,Integer> Gebrauch. Der Schlüssel wäre Ihr Index und der Wert der Wert der Liste.

Für Ihre SubList-Anforderung würde vielleicht TreeMap<Integer,Integer> funktionieren, da es die Schlüssel sortiert hält und es einfach macht, über eine Unterliste zu iterieren.

Dies bedeutet natürlich, dass Sie die List Schnittstelle nicht verwenden können. Wenn Sie die List Schnittstelle verwenden müssen, können Sie Ihre eigene List Implementierung durch ein TreeMap gesichert machen (zum Beispiel list.add(5,3) würde map.put(5,3) nennen).

+4

Alles, was die 'NavigableMap'-Schnittstelle (die 'TreeMap' enthält) implementiert, sollte tun, da es die [subMap] (http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap) bereitstellt .html # subMap% 28K,% 20boolean,% 20K,% 20boolean% 29) Methode, die die OPs für Sublisten erfüllt. – curiousinternals

Verwandte Themen