Fotos Duplikate finden

W

White_Fox

Top Contributor
Gut erkannt, so ist es.

Und Parallelisieren kann man das indem man nicht immer nur eine Karte zieht, sondern gleich 4?
Um mal bei deinem Beispiel zu bleiben: Parallelisierung kannst du erreichen, indem du nicht alleine, sondern mit drei Kumpels die Karten sortierst. Also jeder nimmt für sich eine Karte, und sortiert diese auf den passenden Stapel.

Der Code, den ich oben mit der Klasse PicSorter extends Thread schrieb, würde ja so von mehreren Threads ausgeführt werden.
 
W

White_Fox

Top Contributor
Noch etwas, was ich mit den sortierten Listen wollte: Die jeweiligen Bilderstapel sollen so sortiert werden, daß das Bild, das am einfachsten zu hashen ist, oben liegt. Da fällt mir noch etwas ein, was das Vergleichen der Bilder erheblich beschleunigen würde.

Statt ArrayList<ArrayList<Picture>> unsortedPictures nimmst du eine HashMap<PictureHash, ArrayList<Picture>>. Dann mußt du bei einem Bildvergleich nicht x-mal hashen (neues Bild und ein Bild aus dem Duplikatstapel, multipliziert mit der Anzahl der Duplikatstapel), sondern genau einmal. Und über die HashMap mußt du nicht iterieren, sondern nimmst den Hash bekommst direkt den richtigen Duplikatstapel.
 
M

MiMa

Top Contributor
OK, Danke
Das ist alles neues Zeug für mich und muss mich damit erstmal beschäftigen.
Außerdem ist das auch ein Fall für eine GUI und wird daher etwas dauern. ;)
Fragen kommen bestimmt noch etwas später.
 
W

White_Fox

Top Contributor
Das würde ich mir überlegen. Wenn HashMaps für dich schon neu sind, würde ich dir raten dich erstmal mit dem Wesentlichen zu befassen.

Ich jedenfalls würde für ein Programm, das ich für einen einmaligen Zweck schreibe, mir graphischen Zucker sparen. Da kommt sonst noch so viel mehr Neues für dich hinzu...das wird dich eher ablenken, denke ich.
 
M

MiMa

Top Contributor
Ja du hast recht, auch in der Vergangenheit habe ich Dateien in separate Verzeichnisse verlagert um vor dem endgültigen Löschen nochmal eine Stichprobe machen zu können. Ich nutze auch ADCSee und Directoy Opus.
Eine GUI kommt dann später und der Code wird dann wie alle Methoden die ich in den letzten 7 Jahren entwickelt habe in die Anwendung.
 
B

Barista

Bekanntes Mitglied
so ganz habe ich noch nicht verstanden wie das finden von Duplikate mit den Listen funktionieren soll

Für das Finden von Duplikaten eignet sich die Datenstruktur Set.
Es gibt in Java vorgefertigt (JDK) HashSet und TreeSet.

HashSet ist super schnell. Damit das HashSet funktioniert, müssen die Methoden hashCode und equals korrekt implementiert werden.

Falls Du so viele Dateien hast, dass ds HashSet nicht in den Speicher passt, solltest Du eine Datenbank (mit Index) verwenden.
 
Anzeige


Oben