Grundsätzlich muss man bei ArrayList die Bounds einhalten, ansonsten wird eine IndexOutOfBoundsException geworfen.
Die Antwort zur Frage "schiebt er den alten Eintrag 5 automatisch nach Pos 6 ?" ist ja. Sofern Du viele solcher Operationen hast, wäre es LinkedList performanter!
"ich glaube der letzte Teil müsste mit addAll gehen" trifft zu. Alle Elemente werden jedoch hinter den bereits vorhandenen angefügt.
Grundsätzlich muss angemerkt werden, dass mit Strings sparsam umgegangen werden sollte. Was musst Du überhaupt implementieren?
Bounds bedeutet wenn ich Eine Arraylist anlege die defaultsmässig 10 Positionen hat geht nicht
add(11,"bla")
dat ist noch logisch
Warum mit Strings Sparsam umgehen ?
Ich könnte auch eine Classe machen mit den verschiedenen Werten die ich speichern will
Was zu speichern ist: Höhe,Dauer und ab und zu eine Option - dat ganze wird jeweils durch Zahlen und Buchstaben im String dargestellt.
- ich habe auch desshalb intern ein String gemacht, da ich das auch irgendwann auf die Festplatte speichern will und spätestens dann muss ich die Daten in etwas wandeln was man auf Disk schreiben kann - dat wird so einfacher. ausserdem muss eine Eingabemöglichkeit für die Daten über die Tastatur gegeben sein
Das ganze ist immer noch mein Musik Projekt - und im moment bin ich dabei die Noten eines Liedes intern zu speichern.
Beispiel : 4CQ bedeutet 4. Octave Note C , Viertelnote
Code:
// verkürtze Version
classe Note {
Int octave;
char note;
char typ;
}
währe die andre möglichkeit, aber dann müsste ich 3 Classen zusäzlich schreiben Eingabe2Note , Note2Disk , Disk2note um da auf die Strings zu kommen für die aussenwelt
So siehts im Moment aus
Jede Notenzeile ist eine ArrayList die eine Arraylist von Strings enthält
Die Strings selber stellen dann wie schon gesagt, eine Note da
Code:
ArrayList<ArrayList<String>> bltlst = new ArrayList<ArrayList<String>>();
Im Moment haben die Noten eine Feste breite bei der Darstellung - ob das Langfristig eine gute Idee ist wird sich noch zeigen - da ich nebenbei auch die Noten Lerne kann ich das noch nicht beurteilen.
Eingegeben wurde:
4CQ,4DQ,4EQ,......4GI,4GI
Q= Viertelnote, I = Halbenote
der Eingabe String wird am Komma gesplittet und dat String Array an das ArrayList übergeben
Die Classe Zeichen arbeitet dann die Liste ab
da die Zeichenbreite für eine Note fest ist kann ich auch über ein MausEvent ermitteln welche Note angeklickt wurde - das ist der Teil an dem ich grade dran bin
------------------------------------------------------------------------
Man könnte natürlich auch Ein Classe NotenZeile machen die eine Y Position hat, Einen NotenSchlüssel und eine ArrayList verwaltet von Noten. Diese Notenzeile liegt auch auf eine Arraylist die durch die Haupt Classe NotenBlatt verwaltet wird.
Die Noten selber haben Octave, Art, Typ sowie auch beim Zeichnen eine X Position auf der Zeile
Code:
// mal wider verkürzt
class NotenBlatt {
ArrayList<NotenZeile> zeile = new ArrayList<NotenZeile>();
}
class Notenzeile {
int Ypos;
char schluessel;
ArrayList<Note2paint> noten = new ArrayList<Note2paint>();
}
class Note {
int octave;
char note;
char typ;
}
class Note2paint extents Note {
int Xpos;
}
das währe warscheinlich der reine OOP ansatz ...
wobei ich dann Classen schreiben müsste die Meine DatenClasse verwalten würde - ich behaupte mal es währe unklug Classen zu speichern die Functionen hat .. und das würde dem OOP Gedanken verletzen so wie ich ihn verstanden habe
Frage die in dem Zusammenhang auftaucht: was ist denn Besser - die neue Arraylist so anlegen wie gepostet oder das im Constructor unterbringen ?
da ich grade den neuen Ansatz in Gedanken durchgehe - da ich auf eine Liste alles speichern kann - kann ich irgenwie beim Get (holen der Daten) emitteln ob das ein einfacher Darten Typ ist oder ein Array ?
Hintergrund: es können ja Noten gleichzeitig auftauchen da da würde sich ja ein Array von Note2paint anbieten
sprich auf der Liste können sowohl ein Objekt Note2paint liegen aber auch ein Array von Noten2paint .. wenn dat regelbar ist würde ich umschwenken auf das neue Datenspeicherkonzept.