2016-06-10 11 views
0

In Java mit mehrdimensionalen Arrays arbeiten, die 3 Spalten mit zwei Datentypen haben - Column1 kann von jedem primitiven Datentyp sein, Column2 und Column3 sind ganze Zahlen derselben Größe. Wir haben Tausende dieser Arrays mit vielen Such- und Vergleichsoperationen, daher würden wir gerne sehen, ob es schnellere/kleinere Alternativen zu Arrays vom Typ Objekt gibt. Wir müssen die Sortierreihenfolge beibehalten und Hashing vermeiden. Alle Operationen verwenden alle 3 Spalten.Effizienteste Datenstruktur für Arrays mit 2 verschiedenen Typen

Fasst man die Anforderungen: 1.
Maximieren Geschwindigkeit durch die Datenstruktur Iterieren
2. Die Größe der Datenstruktur Minimieren
3. Pflegen die Sortierreihenfolge der Array-Inhalt
4. Vermeiden Hashing (kein LinkedHashMap)

Strukturen, die wir bisher betrachtet haben:
1. Object-Array (aktuelle Implementierung)
2. Machen sie 2-Arrays (eine für jeden Datentyp) und während des Betriebs ihnen Index Blick von Array beitreten up

Hat jemand noch eine andere (bessere) Empfehlung für die Datenstruktur? Dieses Thanks :)

+0

... ja, Hashing –

+0

@ ɐuıɥɔɐɯ Vielen Dank für Ihren Vorschlag. Allerdings müssen wir die Sortierreihenfolge beibehalten (die Arrays sind auf diese Weise miteinander verbunden), so dass gewöhnliches Hashing keine Option ist. Wir haben versucht, LinkedHashMap, aber das war viel langsamer als ein Array von Typ Objekt. Möchte andere Alternativen – WillGetItDunn

+0

Warum ist Java so wichtig hier? Ich würde eine ausgereifte relationale Datenbank wie Postgres verwenden. –

Antwort

0

ist wie ich - naiv -

  • Verwenden Sie ein Array von Byte-Array ein RDBMS implementieren: byte[][] und eine externe Klasse, die weiß, wie die Byte-Arrays zu implementieren.
  • Im Byte-Array können Markierungen vorhanden sein, wie zum Definieren des Typs für das erste Element. I.e. Marker für den 8 Urtyp (byte, short, int, long, float, double, boolean, char) in 1 Byte paßt leicht.
  • Sie können B-Bäume verwenden (auch bekannt als Indizes) Lookup schneller
  • zu machen, wenn die Reihenfolge der Elemente virtuell sein kann, dann kann ein anderer Index, dass

auch ich glaube, euch bereits wissen. Aber ich bin neugierig, ob es da draußen etwas Neues gibt.

Verwandte Themen