Collections alle Felder auf Collections umstellen

Katzenstreu

Mitglied
Hallo!

Ich könnte mal wieder eure Hilfe gebrauchen. Es geht darum eine von mir bis hierhin erarbeitete Aufgabe
(Lagerverwaltung aus einem Informatik 3 Kurs) von Feldern auf Collections umzustellen. Dabei soll über-
legt werden, welche Map-Arten idealerweise verwendet werden. Ich halte die hashMap für angemessen.
Diese Laboraufgabe (Uni) ist dreiteilig. Im dritten Teil wird die Initialisierung und Programmsteuerung na-
türlich nicht mehr über main() erfolgen, sondern über eine GUI.

Keinesfalls möchte ich, dass ihr diese Aufgabe erledigt. Ich weiß nur nicht, wie ich da ran gehen soll. Viel-
leicht könnt ihr mir eine mehrteilige prinzipielle Vorgehensweise nennen?! Muss nur das Feld Posten[]
ersetzt werden?

Das Programm hat bis jetzt 8 Klassen, die ich hier wohl kaum (372 Zeilen Code) Zitieren kann. Des-
wegen als Anhang UND als gehostetes Project bei Google-Code mit Syntax-Highligting.
/ - katzenstreu - alle möglichen Codeschnipsel - Google Project Hosting

Grüße
Tim :)
 
G

Gast2

Gast
1) Passende Klasse aus dem Colections Framework raussuchen! (Die Oracle Seite hilft dabei)
2) Die Attribute in den KLassen auf den entsprechenden Collections Typ ändern.
3) Alle zugriffspunkte innerhalb der Applikation auf das entsprechende Interface ändern. Idealerweise hast du Methoden geschrieben, welche die Felder manipuliert haben. Dann gehts relativ schnell. Ansonsten den ganzen Code reviewen!
 
G

Gast2

Gast
Naja, aus
Code:
Posten[]
wird erstmal eine
Code:
List<Posten>
. Dann muss dir Liste noch irgendwo erstellt werden, bspw. im Konstruktor mit
Code:
posten = new ArrayList<Posten>();
. Im letzten Schritt musst du dann nur noch alle Zugriffe darauf ändern, get(), set(), add().
 

Katzenstreu

Mitglied
Ich glaube das größte Problem liegt bei Punkt 2. Welche Dinge muss ich tauschen und zu Collections
umwandeln? Ist es so, wie EikeB schreibt nur das Array Posten[], welches zu einer ArrayList werden
muss?
 
Zuletzt bearbeitet:

Katzenstreu

Mitglied
Das war ja einfach! Soll es das gewesen sein? Es gibt keine eckigen Klammern [ ] mehr in meinem
Quellcode, außer die im main()-Aufruf.
Java:
public static void main(String[ ] args){

Ich musste eigentlich nur folgendes ändern:
  • Code:
    array.length
    zu
    Code:
    arrayList.size()
  • Code:
    array[i]
    wurde zu
    Code:
    arrayList.get(i)
  • Aber die add-methode hat deutliche Code-Vorteile gebracht, weil ich zuvor ein temp-Array erstellen
    musste, um darin das alte Array zwischenzuspeichern. Das Alte Array wurde gelöscht und vergrößert und
    dann mit dem temp-Array und den neuen Objekten gefüllt.

Nett wäre es, falls nochmal jemand schauen kann, ob der Code im Anhang so okay ist. Denn dann geht es
nun weiter, die GUI wird erstellt.

Grüße,
Tim
 

Katzenstreu

Mitglied
Gut Marco13, danke! In diesem Flal war sogar mir mal bewusst, dass ich der main()-Funktion nichts
übergebe und dass die Klammern dort entfernt werden könnten. Hätte ich das bloß getan :).
 

Marco13

Top Contributor
War eher ein "Witz" (weil du so auf die [] Klammern "fixiert" warst) ;) Dort wird immernoch ein Array übergeben, und man kann (wenn man etwas übergibt) mit
args[0]
usw. drauf zugreifen. Stichwort "varargs".
 

Neue Themen


Oben