ArrayList mit Indices parallel sortieren

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Folgender Sachverhalt:

Code:
public void createSubImageSet(ArrayList <BufferedImage> subImages, ArrayList <Integer> indices)

Ich übergebe bestimmte/ausgewählte, quadratische und durchnummerierte BufferedImages als Teile (subImages) eines ganzes Bildes. Die Nummerierung sieht so aus, dass ich bei der Übergabe der Nummern Mengen habe wie z.B. 3, 5, 125, 37, 58, .... Also völlig willkürlich und je nach dem welche subImages übergeben werden sollen. Gleichzeitig werden die subImages in einer ArrayList übergeben. So wird z.B. als erstes das 47. subImage übergeben und besitzt somit den Index "47" und nicht "1". Als zweites könnte z.B. subImage Nummer 7 übregeben werden, usw..

Ziel ist es, die subImages nach ihrem Index zu sortieren. Da es sich um zwei Parameter handelt, muss diese Aktion parallel geschehen. Wenn index[0] == 47 und index[1] == 7 in der Reihenfolge {7, 47} sortiert werden sollen, so müssen auch die dazugehörigen subImages in der Reihenfolge (ihrem Index folgend) gedreht werden.

Es geht mir dabei auch nicht um die Umsetzung als solche, weil ich keine Idee habe, sondern, dass das ganze performant ablaufen soll, d.h. zackig und ohne großes Speicher verpulvern via zig mal umkopieren etc.

Ich hoffe, die Fragestellung ist klar und ich hoffe, jemand kann mir helfen :)
 

Ladi

Mitglied
Hallo Gast,

hoffe deine Frage korrekt verstanden zu haben. Überlege dir doch mal deine Datenstruktur anzupassen.

Beispiel:

Code:
class ImageHolder implements Comparable<ImageHolder> {
	private Integer index;
	private BufferedImage subImage;
	
	public ImageHolder(BufferedImage img, Integer index) {
		this.index = index;
		subImage = img;
	}
	
	public Integer getIndex() {
		return index;
	}
	
	public BufferedImage getImage() {
		return subImage;
	}
	
	public int compareTo(ImageHolder o) {
		return index.compareTo(o.index);
	}
}

public static void createSubImageSet(Vector<ImageHolder> images) {
// ...
}

//...
public static void test() {
	Vector<ImageHolder> images = new Vector<ImageHolder>();
	
	images.addElement(new ImageHolder(img1, 0));
	images.addElement(new ImageHolder(img2, 1));
	images.addElement(new ImageHolder(img3, 2));
		
	Collections.sort(images);
		
	createSubImageSet(images);	
}
//...

Ich glaube nicht, dass Du dabei in Performanceprobleme kommst. Performancetuning sollte man erst betreiben wenn tatsächlich Bottlenecks vorhanden und richtig erkannt sind. Davor heisst es immer saubere Struktur.

Gruß
Ladi
 
G

Gast

Gast
Ich denke, das sieht gut aus. Werde ich gleich mal ausprobieren :)
Danke dir^^
 
G

Gast

Gast
Leider kann ich das Prog. nicht testen. Die Schnittstelle zu den vielen BufferedImages fehlt mir noch. Kannst du mir nochmal klar machen was dein Prog. macht? createSubImageSet sollte mit zwei Parametern sein: die Images und die dazugehörigen Indices.
 

Ladi

Mitglied
Heiß das, dass Du die Funktion
Code:
public void createSubImageSet(ArrayList <BufferedImage> subImages, ArrayList <Integer> indices)

nicht im Griff hast... d.h. Du kannst Ihre Schnittstelle nicht verändern?.

Ich dachte, du möchtest innerhalb dieser Funktion die Bilder in der richtigen Reihenfolge verarbeiten. Dann wäre der Kode ungefähr folgend:

Code:
	public static void test() {
		Vector<ImageHolder> images = new Vector<ImageHolder>();
		
		images.addElement(new ImageHolder(img1, 40));
		images.addElement(new ImageHolder(img2, 1));
		images.addElement(new ImageHolder(img3, 57));
		
		Collections.sort(images);
		
		createSubImageSet(images);
	}
	
	public static void createSubImageSet(Vector<ImageHolder> images) {
		for (ImageHolder h: images) {
			BufferedImage img = h.getImage();
			Integer index = h.getIndex();
			
			// Reihenfolge der Verarbeiteten Bilder: img2, img1, img3
			doWhatewerYouWantWith(img, index);
		}
	}

Solte es sich hier um eine Fremdfunktion handeln, würde ich die Sache natürlich anders angehen. Sollte es so sein, dann melde dich nochmal. Hat mir bisher nicht danach ausgeschaut.

Gruß
Ladi
 
S

SuperFamicom

Gast
@ Frage:
Nee nee ;) Hat mit "Schnittstelle verändern" nichts zu tun. Ich meinte nur, dass ich momentan nicht das eigentliche Programm "da habe", mit dem ich die ganzen subImages per Maus-Klick ausschneiden und übergeben kann. Müsste mir erst das Project von einem anderen Rechner rüberkopieren. So bastel ich momentan an diversen kleineren einbaubaren Geschichtchen, die ich später dann irgendwann mal ins eigtl. Prog. reinsetze.

Die Methode createSubImageSet(img, index) ist Methode einer Klasse B, die wiederrum von einer anderen Klasse A aus aufgerufen wird. In Klasse A soll dann über <...>.createSubImageSet(img, index) das image und der index in Klasse B gespeist werden.
 
S

SuperFamicom

Gast
Nachtrag:
Die Bilder sollen in createSubImageSet sortiert werden ^^
 

Ladi

Mitglied
In dem Fall bräuchtest Du bei dieser Datenstruktur die Funktion createSubImageSet nicht mehr. Sortieren wird dann mit Java-Boardmitteln gemacht.

Die Klasse ImageHolder ist sortierbar (Implementiert Comparable) und Collection.sort kann jede Collection sortieren, die Comparables beinhaltet.

Nach dem Aufruf von:
Code:
Collections.sort(images);

Wird der Vector images nach Indizes sortiert.

Gruß
Ladi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M ArrayList oder LinkedList Allgemeine Java-Themen 10
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
R ArrayList Allgemeine Java-Themen 4
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
L ArrayList sortieren Allgemeine Java-Themen 2
C ArrayList Problem Allgemeine Java-Themen 3
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
S ArrayList Design Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6
X Output von ArrayList Allgemeine Java-Themen 3
H Stream in ArrayList umwandeln Allgemeine Java-Themen 2
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Arraylist vollständig abspeichern und laden Allgemeine Java-Themen 1
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
D ArrayList Indexlänge ändern Allgemeine Java-Themen 2
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Mehrdimensionale ArrayList mischen Allgemeine Java-Themen 10
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
MiMa Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
MiMa ArrayList Rückgabewerte aus einer Funktion Allgemeine Java-Themen 15
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
T Collections ArrayList Sortieren Allgemeine Java-Themen 4
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H ArrayList: Leere Elemente finden? Allgemeine Java-Themen 2
GreenTeaYT Verständnisprobleme zur Arraylist Allgemeine Java-Themen 1
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
K ArrayList sortieren Allgemeine Java-Themen 16
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
S Mehrdimensionales ArrayList ins HashSet Allgemeine Java-Themen 10
C ArrayList Allgemeine Java-Themen 8
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
K Array in ArrayList Allgemeine Java-Themen 16
Paul15 2D Arraylist in Jtable Allgemeine Java-Themen 1
Paul15 Arraylist 2D Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
Neumi5694 Datentypen ArrayList vs TreeMap Allgemeine Java-Themen 6
F ArrayList Allgemeine Java-Themen 11
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
M ArrayList mit verschiedenen Datentypen in String konvertieren Allgemeine Java-Themen 10
Z Elemente einer ArrayList von rechts wegnehmen Allgemeine Java-Themen 5
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
R ArrayList und HashMap Allgemeine Java-Themen 7
T ArrayList zeilenumbruch entfernen Allgemeine Java-Themen 13
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
Doopy ArrayList plötzlich leer Allgemeine Java-Themen 2
D Arraylist eigener Klasse an iReport übergeben Allgemeine Java-Themen 7
L ArrayList Inhaltstyp. Allgemeine Java-Themen 5
Z Klassen ArrayList selbst machen Allgemeine Java-Themen 5
J Arraylist speichern und laden? Allgemeine Java-Themen 5
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
M ArrayList<String> Frage Allgemeine Java-Themen 7
O ArrayList kaputt?! Allgemeine Java-Themen 5
M ArrayList<Foo> in ein Foo[] konvertieren? Allgemeine Java-Themen 8
Bananabert Abstract ArrayList Allgemeine Java-Themen 4
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
O ArrayList - Serialisierungs-Problem Allgemeine Java-Themen 11
M JTable + ArrayList Allgemeine Java-Themen 3
M Datentypen ArrayList in Integer konvertieren Allgemeine Java-Themen 3
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
Madlip Variablen 3 Werte aus ArrayList und weiter ... Allgemeine Java-Themen 4
S arraylist nach n. Eintrag numerisch Sortiren Allgemeine Java-Themen 5
O Problem beim Auslesen einer Arraylist von JComboBoxen Allgemeine Java-Themen 2
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
M Kovariante Rückgabewerte mit ArrayList Allgemeine Java-Themen 3
H LinkedList<LinkedList<String>> nach ArrayList<ArrayList<String>> ? Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
Maxim6394 Problem mit ArrayList Allgemeine Java-Themen 5
E Berechnung in Arraylist Allgemeine Java-Themen 10
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
V Fork Join bei Arraylist Allgemeine Java-Themen 6
H Fehler in Arraylist Allgemeine Java-Themen 2
S Datensätze in eine ArrayList<Movie> speichern Allgemeine Java-Themen 13
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
J ArrayList-Problem Allgemeine Java-Themen 16
S Von einer ArrayList in die andere schreiben? Allgemeine Java-Themen 6
S ArrayList<JLabels> "malen" Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben