Arrays

Status
Nicht offen für weitere Antworten.
C

chrisixxy

Gast
Hallo Leute!

Besteht in Java die Möglichkeit im selben 2D-Array Zeilen oder Spalten zu löschen oder hinzuzufügen?
Geht das nur durch Kopierenden der Elemente in einem neuen Array?
 
S

SlaterB

Gast
nur durch Kopieren oder willst du nicht lieber eine ArrayList verwenden?
 
C

chrisixxy

Gast
ArrayList?

Muss noch mal nachschlagen was das ist. ?) :-(
 
C

chrisixxy

Gast
Auf den ersten Blick erscheint mir die Arbeit mit Arrays günstiger.
Es geht darum, Matrizen zu manipuliern, sprich Zeilen oder Spalten hinzuzufügen oder zu löschen. Da erscheint mir einer herumkopiererei zu aufwendig.
 

Oli

Top Contributor
Hallo,

naja wie du schon sagst, das Problem ist eben die Hermukopererei bei einem Array. Das ist statisch, sobald es angelegt ist. Mit einer ArrayList kannst du sehr einfach Matrixmanipulationen durchführen. Wenn du die Aufgabenstellung mal posten könntest, dann wäre es einfacher Tipps zu geben.

Oli
 

didjitalist

Bekanntes Mitglied
ich würd nur dann arrays nehmen, wenn du deine matrizen mit extrem wenig speicher auskommen lassen musst. wenn ein wenig overhead keine rolle spielt, nimm einfach ne ArrayList. spart ne menge code.
 
C

chriixxy

Gast
Ich bin dabei, ein System zu entwickeln, dass in der Lage ist
10^6x10^6 Matrizen zu verarbeiten. Das wären 10^12 Elemente mit je 64 Bit. Da ist eine Einsparung kostbar. Das soll aber in
Verteilten System geschehen.
 

Oli

Top Contributor
Hi,

gut ds sind natürlich etwas größere Dimensionen, aber gerade bei solchen Dimensionen würde ich eine ArrayList nehmen. Denn wenn du ein Array von 10^6 * 10^6 kopieren musst, weil du etwas entfernen oder hinzufügen willst, dann hast du den doppelten Speicherverbrauch und somit denke ich schon, dass du mit der ArrayList besser bedient bist...
 

Verjigorm

Top Contributor
Ne ArrayList ist intern auch nurn Array ...

bei nem add() wird auchnix anderes gemacht, als das array mit einer größe+1 neu anzulegen usw.
 
S

SlaterB

Gast
nana, wie kommst du denn darauf?
bisschen intelligenter geht die ArrayList schon vor (erzeugt gleich ein doppelt so großes Array), was aber auch wieder gefährlich sein kann
 

Oli

Top Contributor
Äh, seid ihr da sicher? Ich dachte die ArrayList nimmt speichert den Wert und verweist auf Vorgänger und Nachfolger und bei einem add wird eben genau 1 Element mehr angelegt und der benötigte Speicher entsprechend allokiert? Oder verwechsle ich da gerade etwas?
 

FArt

Top Contributor
Oli hat gesagt.:
Äh, seid ihr da sicher? Ich dachte die ArrayList nimmt speichert den Wert und verweist auf Vorgänger und Nachfolger und bei einem add wird eben genau 1 Element mehr angelegt und der benötigte Speicher entsprechend allokiert? Oder verwechsle ich da gerade etwas?

Das ist eine verkettete Liste.
 

Verjigorm

Top Contributor
SlaterB hat gesagt.:
nana, wie kommst du denn darauf?
bisschen intelligenter geht die ArrayList schon vor (erzeugt gleich ein doppelt so großes Array), was aber auch wieder gefährlich sein kann

Nicht ganz doppelt so groß
Code:
int newCapacity = (oldCapacity * 3)/2 + 1;

das mit Größe+1 war auch nur so dahergesagt.
Ich wollte nur darauf hinaus, dass die ArrayList intern auch nur ein Array ist, welches dann "öfters" mal umkopiert wird.
 

Verjigorm

Top Contributor
Oli hat gesagt.:
Äh, seid ihr da sicher? Ich dachte die ArrayList nimmt speichert den Wert und verweist auf Vorgänger und Nachfolger und bei einem add wird eben genau 1 Element mehr angelegt und der benötigte Speicher entsprechend allokiert? Oder verwechsle ich da gerade etwas?

Schau dir doch den Quellcode an:
Eine "leere" Arraylist ist ein Array mit der Kapazität von 10.

Code:
...    public ArrayList(int initialCapacity) {
	super();
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
	this.elementData = new Object[initialCapacity];
    }

    /**
     * Constructs an empty list with an initial capacity of ten.
     */
    public ArrayList() {
	this(10);...
 

Oli

Top Contributor
Ok, dann nehme ich meinen Beitrag weiter oben natürlich zurück...
Was aber dann auch bedeutet, dass eine ArrayList nicht wirklich besser ist. Ich muss mich halt nicht mehr um die Funktionalitäten kümmern. Aber speicher- und geschwindigkeitstechnisch ist es kein Gewinn, oder sehe ich das falsch?
 
S

SlaterB

Gast
kommt darauf an, was man mit dem Array selber stattdessen machen würde,
Situation: 10^6 x 10^6 Array, 17. Zeile löschen,

erstellt man nun ein komplett neues Array 10^6-1 x 10^6 und füllt es korrekt,
oder behält man das alte Array und verschiebt nur die Zeilen, so dass die letzte Zeile leer ist
und prüft bei allen wichtigen Vorgängen, ob die letzte (oder noch mehr) Zeile(n) leer ist (sind),

zu ersterem wäre die ArrayList schneller, zu letztem gleich schnell und nur bequemer
 

Oli

Top Contributor
Ok, das gilt fürs löschen, beim hinzufügen einer Zeile muss ich aber zwingend kopieren, oder?
 
S

SlaterB

Gast
wenn die Größe erreicht ist, ja, bei der ArrayList hoffentlich nur selten,
(wenn auch nicht ganz so selten wie ich bisher immer dachte ;) )

mit dem Array kann man das manuell wieder genausogut hinbekommen, wenn man sich nur die gleiche Mühe gibt


edit:
man sollte ja nicht vergessen:
bei einem 10^6 x 10^6 Array reicht es auch, wie die ArrayList nur die Hauptdimension zu erweitern,
ob das eine Hauptarray nun 10^6 oder auch 10^7 groß ist, macht weniger als 1% Speicherunterschied,
solange man die ganzen leeren Zeilen nicht auch erzeugt, sondern sie auf null läßt

das Einfügen einer Spalte wäre bei beiden aufwendig, da alle 10^6 Zeilen um 1 verlängert werden müssen
 
C

chrisixxy

Gast
D.h. dass der Arbeis- und Speicheraufwand in beiden Fällen gleich
ist. Richtig?
 

Marco13

Top Contributor
Nicht ganz. Wenn eine ArrayList eine Kapazität von 1000000 hat, und genausoviele Elemente enthält, und man dann noch EINS hinzufügt, wird Platz für 1500000 Elemente reserviert - das kann schonmal den Speicher vollhauen. Aber wenn man die Größe immer nur um 1 erhöht, kann sukzessives Einfügen schon ewig lange dauern.

Insgesamt klingt das aber, als seien weder Arrays noch ArrayLists geeignet. Du solltest dir vielleicht über ein ... anderes Format Gedanekn machen. Einstiegspunkt: http://en.wikipedia.org/wiki/Matrix_representation
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ü Arrays vergleichen Allgemeine Java-Themen 59
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Ü Eurobeträge in möglichst wenig Scheine/Münzen zerlegen (2D-Arrays) Allgemeine Java-Themen 27
Buroto Arrays generator Allgemeine Java-Themen 10
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
P Generics und Arrays Allgemeine Java-Themen 6
O Arrays an DOCX-Stamper Library übergeben Allgemeine Java-Themen 1
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
R Spalten/Zeilen verschieben in zweidimensionalen Arrays? Allgemeine Java-Themen 3
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
W Spaß mit Arrays Allgemeine Java-Themen 1
W Reflexion und Arrays Allgemeine Java-Themen 7
S Problem mit Arrays Allgemeine Java-Themen 1
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Neoline Interpreter-Fehler Probleme mit Arrays.toString Allgemeine Java-Themen 7
H Zweidimensionale Arrays Allgemeine Java-Themen 6
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Methoden clone(), arraycopy(): ein- und zweidimensionale Arrays Allgemeine Java-Themen 8
D Übereinstimmungen in Arrays Allgemeine Java-Themen 5
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
J Arrays auf gleichheit untersuchen funktioniert nicht Allgemeine Java-Themen 11
N 2 Arrays abwechselnd verbinden Allgemeine Java-Themen 13
J private and arrays Allgemeine Java-Themen 2
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
C Zweidimensionale Arrays - Quadratisch? Allgemeine Java-Themen 4
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
S Datentypen Warum ist bei Arrays die Länge als Property aufrufbar? Allgemeine Java-Themen 1
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
DanielsLPecke Java Arrays an andere Java Programme schicken und zurück Allgemeine Java-Themen 5
H Arrays Allgemeine Java-Themen 4
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
B automatisch benannte arrays erstellen Allgemeine Java-Themen 9
Y inhalte aus 2 unterschiedlichen Arrays miteinander vergleichen Allgemeine Java-Themen 12
M Arrays.sort Problem Allgemeine Java-Themen 2
F Arrays Allgemeine Java-Themen 2
F Arrays Allgemeine Java-Themen 4
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
F mehrdimensionale Arrays Allgemeine Java-Themen 4
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
I Verschiedene Arrays auslesen Allgemeine Java-Themen 6
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
C Best Practice Tiefe Kopie eines Arrays unbekannter Dimension und unbekannten Typs Allgemeine Java-Themen 4
R kann man irgendwie mit Arrays mit Eingabefenstern und Schleifen Werte abklappern? Allgemeine Java-Themen 2
R Was los mit dieser Aufgabe? Arrays mit Schachbrettmustern? Allgemeine Java-Themen 10
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
T String Arrays aus den Argumenten auslesen Allgemeine Java-Themen 3
E ArrayIndexOutOfBounds - mehrdimensionale Arrays Allgemeine Java-Themen 6
D Arrays überschreiben sich Allgemeine Java-Themen 2
C Klonen von Arrays/ Matrizenrechnung Allgemeine Java-Themen 2
K Mehrere Arrays auf einmal erstellen Allgemeine Java-Themen 2
P Arrays erzeugen Allgemeine Java-Themen 5
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
S Variablen Dynamische Arrays Allgemeine Java-Themen 2
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
C Arrays.asList() - Problem Allgemeine Java-Themen 3
M problem mit speicherbedarf von arrays Allgemeine Java-Themen 14
B Generics und primitve arrays Allgemeine Java-Themen 6
V Umbennen von Arrays Allgemeine Java-Themen 7
M Einfluss von Caching auf die Performance (große Arrays) Allgemeine Java-Themen 24
A Frage zu Arrays Allgemeine Java-Themen 6
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
R Methoden Rückgabe Arrays aufangen Allgemeine Java-Themen 29
T Arrays erstellen Allgemeine Java-Themen 3
C Zwei Arrays vereinen Allgemeine Java-Themen 3
J Array Sortierung auf andere Arrays anwenden Allgemeine Java-Themen 6
D Vertauschen von arrays vom Typ String Allgemeine Java-Themen 2
BattleMaster246 Arrays funktionieren nicht Allgemeine Java-Themen 6
S "Arrays" mit String-Key? Allgemeine Java-Themen 3
L verkettete Listen oder Arrays + Indexlisten effizienter? Allgemeine Java-Themen 3
S Überprüfung/Parsen eines Byte-Arrays Allgemeine Java-Themen 9
Developer_X Aus Datei in Arrays laden-Problem Allgemeine Java-Themen 5
O Problem beim Ausgeben von Arrays Allgemeine Java-Themen 9
G Arrays.toString Allgemeine Java-Themen 4
S to string mit arrays Allgemeine Java-Themen 10
S Objekte mit Arrays Allgemeine Java-Themen 9
Meldanor Mehrdimensionale Arrays : Zugriff auf n-tes Array Allgemeine Java-Themen 5
K Arrays.asList und primitive Typen Allgemeine Java-Themen 2
P Beschreibung eines Arrays Allgemeine Java-Themen 3
S Rücklieferung eines String-Arrays über Methode? Allgemeine Java-Themen 3
lacco Speicherverbrauch von Arrays Allgemeine Java-Themen 2
J Mit mehrdimensionalen Integer-Arrays arbeiten Allgemeine Java-Themen 17
knuckles12 null pointer exception bei arrays Allgemeine Java-Themen 6
H2SO3- dynamisches anlegen der dimensionaltität eines arrays Allgemeine Java-Themen 6
G Arrays von Klassen initialisieren Allgemeine Java-Themen 13
D Felder (Arrays) Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben