Hi Leute,
ich hab ne wahrscheinlich banale Frage!
Ich möchte ein zweidimensonales Array untersuchen, ob ein bestimmtes Element enthalten ist und dann die komplette Reihe löschen.
Z.B. hätte ich folgendes gegeben:
Array = [a,f][r,t][j,a][m,n][a,t][x,y]
nun frage ich wenn a enthalten lösche Tupel:
ArrayNeu= [r,t][m,n][x,y]
Elemente aus zweidimensionalen Array löschen
Moderator: wegus
Re: Elemente aus zweidimensionalen Array löschen
Moin!
Arrays kann man nach erster Initialiserung nicht mehr in ihrer Struktur verändern. Als Ersatz gibt es die ArrayList Collection.
Beste Grüße,
Josch.
Arrays kann man nach erster Initialiserung nicht mehr in ihrer Struktur verändern. Als Ersatz gibt es die ArrayList Collection.
Beste Grüße,
Josch.
Re: Elemente aus zweidimensionalen Array löschen
Hi,
ich hab folgendes gebastelt und es gibt mir ständig ein "ArrayIndexOutOfBoundsException: 4" aus!
Und ich kanns einfach nicht verstehen!
ist ein zweidimensionales Array und
ist ein eindimensionales Array
Was mach ich falsch!?
Wie würde den eine ArrayList Colection aussehen?
ich hab folgendes gebastelt und es gibt mir ständig ein "ArrayIndexOutOfBoundsException: 4" aus!
Und ich kanns einfach nicht verstehen!
Code: Alles auswählen
managerAlg.getNotModkombo()
Code: Alles auswählen
managerAlg.getNewAuswahlMods()
Code: Alles auswählen
Object[][] resModKombo = new Object[managerAlg.getNotModkombo().length][2];
int index = 0;
for (int i = 0; i < managerAlg.getNewAuswahlMods().length; i++) {
for (int j = 0; j < managerAlg.getNotModkombo().length; j++) {
if ( !(managerAlg.getNotModkombo()[j][0].equals(managerAlg.getNewAuswahlMods()[i]))
&& !(managerAlg.getNotModkombo()[j][1].equals(managerAlg.getNewAuswahlMods()[i])) ) {
resModKombo[index++] = managerAlg.getNotModkombo()[j]; // <- Zeile mit der Exception
}
}
}
Object[][] resModKombo2 = Arrays.copyOfRange(resModKombo, 0, index);
Wie würde den eine ArrayList Colection aussehen?
Re: Elemente aus zweidimensionalen Array löschen
Ich meine ich weiß wie eine ArrayList funktioniert, aber zweidimensional?
Re: Elemente aus zweidimensionalen Array löschen
Moin!
Man kann aber recht schlecht darauf zugreifen. Eine sehr interessante Möglichkeit (aber Speicherintensiv) wäre eine HashMap:
Erstmal, damit es bequem ist, ein Index-Objekt:
Jetzt kann man Index in einer Map verwenden:
Vorteile: Beliebige Lücken in dem Array, sehr gut lesbar, man darf natürlich auch beliebige Elemente löschen.
Nachteile: Hocher Speicherplatzverbrauch, relativ langsamer Zugriff, Größe von Zeilen und Spalten nicht zu ermitteln (was man aber in eine Klasse ArrayMap extends HashMap reinbringen könnte).
Beste Grüße,
Josch.
Code: Alles auswählen
List<List> dimA = new ArrayList<List>();
for (int i=0; i < 10; i++) {
List dimB = new ArrayList();
dimA.add(dimB);
}
Erstmal, damit es bequem ist, ein Index-Objekt:
Code: Alles auswählen
package org.sepix.arraytools;
public class Index {
private int i;
private int j;
public static Index ix (int i, int j) {
return new Index (i, j);
}
public Index (int i, int j); {
this.i = i;
this.j = j;
}
public int getI() {
return i;
}
public int getJ() {
return j;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Index other = (Index) obj;
if (this.i != other.i) {
return false;
}
if (this.j != other.j) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 3;
hash = 67 * hash + this.i;
hash = 67 * hash + this.j;
return hash;
}
}
Code: Alles auswählen
import static org.sepix.arraytools.Index.*;
...
public final static void main (String args..) {
Map<Index, String> array = new HashMap<Index, String>();
array.put (ix(0, 0), "Demodaten");
array.put (ix(0, 1), "Noch ein Wert");
array.put (ix(7, 7), "Ha, das geht auch!");
String data = array.get (ix(0,1));
array.remove (ix(0,0));
System.out.println (array.values());
}
Nachteile: Hocher Speicherplatzverbrauch, relativ langsamer Zugriff, Größe von Zeilen und Spalten nicht zu ermitteln (was man aber in eine Klasse ArrayMap extends HashMap reinbringen könnte).
Beste Grüße,
Josch.
Re: Elemente aus zweidimensionalen Array löschen
Hi,
habs mit zwei ArrayLists gelöst!!
Danke nochmals!
Wie kann man eigentlich den Status der Fragen ändern?
Gruß
habs mit zwei ArrayLists gelöst!!
Danke nochmals!
Wie kann man eigentlich den Status der Fragen ändern?
Gruß