Generika stapeln

8

Ist das eine schlechte Übung?

%Vor%     
rhombidodecahedron 14.07.2010, 15:06
quelle

7 Antworten

4

Dies ist nicht unbedingt eine schlechte Übung. Es ist einfach "unlesbar". Haben Sie ein wenig Geduld, in der kommenden Java 7 dürfen Sie die Gruft in spezifischen generischen Typen weglassen, wenn Sie den parametrisierten Typ konstruieren:

%Vor%

Dies wird Inferenz genannt.

Wenn Sie jetzt mit Compilerwarnungen leben können, können Sie dies auch tun:

%Vor%     
BalusC 14.07.2010, 16:30
quelle
7

Es ist eine dreidimensionale Matrix basierend auf ArrayList. Sieht nicht gut aus, aber so müssen wir es schreiben.

Eine Alternative könnte sein:

%Vor%

was etwas kürzer und normalerweise OK ist, da Sie in den meisten Fällen nur an den Interface-Methoden interessiert sind.

Wenn Sie also eine skalierbare dreidimensionale Matrixdatenstruktur benötigen, dann ist dies ein sauberer Ansatz.

    
Andreas_D 14.07.2010 15:15
quelle
4

Es wäre wahrscheinlich eine gute Idee, eine neue Klasse zu erstellen, um das Verhalten zu behandeln, das Sie erreichen wollen. Ich würde eine Klasse erstellen, die eine private ArrayList<...> verwendet (Begünstigung der Delegierung über Vererbung) und erforderliche Methoden erstellen. Wenn überhaupt, sollte es das Lesen und Verstehen erleichtern.

    
Jerod Houghtelling 14.07.2010 15:18
quelle
3

ja. Höchstwahrscheinlich ist Ihr Code mit double[][][]

besser aufgehoben     
irreputable 14.07.2010 18:04
quelle
2

Nun, brauchen Sie eine Liste, deren Elemente Listen sind, deren Elemente Listen sind? Wir haben keine Ahnung, was Sie erreichen wollen, wenn Sie es uns nicht sagen.

Allerdings ist die Verwendung von ArrayList direkt und nicht List in der Tat eine schlechte Übung.

    
matt b 14.07.2010 15:08
quelle
1

Hängt davon ab, wie Sie dies verwenden möchten. Vielleicht könnten Sie die zweidimensionale Liste einkapseln und mit einem List<TwoDimensionalList<Double>> enden. Vermutlich würde es Operationen wie TwoDimensionalList.get(int i, int j) haben, um ein Element in der j th-Position der i th-Liste zu erhalten.

edit: Wenn es sich nicht um eine Liste zweidimensionaler Listen handelt, sondern um eine dreidimensionale Liste, dann möchten Sie natürlich ein ThreeDimensionalList . (Und wenn die Dimensionen Ihrer Liste festgelegt sind, können Sie dies intern mit einem einzelnen Array (Liste) implementieren, wobei sich das Element (i,j,k) an der Position i*dim1 + j*dim2 + k*dim3 befindet).

    
wds 14.07.2010 15:14
quelle
0

Zumindest würde die ausdrückliche Benennung von etwas wie 3dList helfen. Bevorzugt ist für mich, eine benutzerdefinierte Verkapselung der 2D / 3D-Liste zu schreiben, wie andere oben vorgeschlagen haben.

    
Jhakki 14.07.2010 16:21
quelle

Tags und Links