Zugriff auf Vector Element

hacke78

Mitglied
Hallo
ich habe ein riesiges Daten Array geschaffen, welches ich aufgrund seiner Größe nur über Sparse Vektoren von matrix-toolkits-java - a comprehensive collection of matrix data structures, linear solvers, least squares methods, eigenvalue and singular value decompositions. - Google Project Hosting handeln kann. Es ist eine Distanzmatrix einer großen Punktmenge. So erstelle ich das Array :
Code:
                dm = new ArrayList<SparseVector>();
		for (int i = 0; i < size; i++){
			dm.add(new SparseVector(size,0));
			dm.get(i).add(i,0.0);
			LaserPoint point = points.get(i);
			for (int j = 0; j < size; j++){
				LaserPoint point2 = points.get(j);
				double dist = point.distToPoint(point2);
				if (dist<=0.1){
					dm.get(i).add(j,dist);
				}
				
			}
		}
eigentlich wollte ich mit
Code:
dm.get(i).add(i,0.0);
mir im ersten Element abspeichern, an welchem Index ich mich befinde, da ich im Laufe meines Programmes gerne SparseVektor Elemente aus der ArrayList löschen würde, und sich die Indizes damit verändern, ich aber auf den ursprünglichen Indexwert zugriff haben möchte. Nun ist es jedoch so, dass mein erster Eintrag im Vektor an die "richtige Stelle" verschoben wird und ich somit den Vektor Eintrag suchen müsste, an dem der zum Index zugehörige Distanzwert 0 ist. Gibt es dafür eine Elegante Lösung?
 
Das "dm" steht wohl für "Distance Matrix"... Daher auch die Frage: Warum verwendest du da eine Liste von SparseVectors, und keine Matrix? Wenn das irgendwelche driftigen, übergeordneten Gründe hat, müßtest du das mit der "richtigen Stelle" nochmal genauer erklären - auch im Hiblick darauf, was es bedeutet, wenn man bei einer Distanzmatrix Spalten löscht (ohne die entsprechenden Zeilen zu löschen!?), und insbesondere, was dieses Abspeichern des Index bedeuten soll... das klingt nach einem Hack/Workaround.

BTW: Davon ausgehend, dass die Distanzfunktion symmetrisch ist, würde es reichen, die Hälfte der Daten zu speichern.
 
in listen kann man doch mit iterator durchgehen, position merken, löschen usw

z.B.
Java:
        List<String> liste = new ArrayList<String>();
        liste.add("a");
        liste.add("b");
        liste.add("c");
        liste.add("d");
        liste.add("e");

        Iterator<String> ite = liste.iterator();
        System.out.println(ite.next());
        ite.next();
        ite.remove();
        System.out.println(ite.next());

        System.out.println(liste.toString());
auch wenn ich nicht so ganz schlau werde was du vor hast
 

Neue Themen


Zurück
Oben