ArrayList<String> durchsuchen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,
kann es sein, dass wenn man eine ArrayList<String> aufsteigend sortiert und diese dann mit der binarySearch durchsucht, die Suche aus irgendeinem Grund nicht richtig funktioniert? Kann es an Sonderzeichen in den Strings liegen?

Eine andere Frage ist: Gibt es in Java eine Methode, die Strings eindeutige Intgerwerte zuordnete, so wie zB eine Gödelnummer?
 

Pappenheimer++

Bekanntes Mitglied
Es gibt Hashverfahren, aber die sind nie 100%ig bijektiv, außerdem funktionieren sie nur in eine Richtung. Abgesehen davon ist der Wertebereich von int da nicht ausreichend.
 

tincup

Bekanntes Mitglied
Aber mal zur ersten Frage.

Eigentlich sollte das funktionieren. Mit Sonderzeichen kann das eigentlich nichts zu tun haben. Die Sortierung und auch die binäre Suche aus Java hängen ja nur von der entsprechenden compare Implementation ab. Und solange die konsistent arbeitet kann da nicht viel schiefgehen.
Code?
 
G

Guest

Gast
Ich poste mal die notwendigen Codeschnipsel:

Code:
ArrayList<String> files = new ArrayList<String>();
...
files.add(root[i].getPath());
...
for(String s : files) {
    if(Collections.binarySearch(files_alt, s) < 0) {
        System.out.println(s + " wurde gelöscht");
    }
}

Wenn ich jetzt eine Datei gelöscht habe, dann wird das nicht ausgegeben
 
S

SlaterB

Gast
es sind mehr Codeschnipsel notwendig (files_alt & warum sollte s nicht in files_alt enthalten sein?)
 
G

Guest

Gast
Code:
public class Liste2 {
    ArrayList<String> files = new ArrayList<String>();
    Date date;
    
    public Liste2(File f) {
        sucheOrdner(f);
        Collections.sort(files);
        System.out.print("Liste erstellt: \t" + files.size() + " Ordner");
        speichereListe();
    }
    
    private void sucheOrdner(File f) {
        File[] root = f.listFiles();
        if((root = f.listFiles()) != null) {
            for(int i = 0; i < root.length; i++) {
                if(root[i].isDirectory()) {
                    files.add(root[i].getPath());
                    sucheOrdner(root[i]);
                }
            }
        }
    }
    
    private void speichereListe() {
        ObjectOutputStream o = null;
        try {
            OutputStream fos = new FileOutputStream("file_liste.ser");
            o = new ObjectOutputStream(fos);
            o.writeObject(new Date());
            o.writeObject(files);
            
        } catch (IOException ex) {
            Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                o.close();
            } catch (IOException ex) {
                Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    private ArrayList<String> leseListe() {
        ArrayList<String> files_alt = null;
        ObjectInputStream o = null;
        try {
            InputStream fis = new FileInputStream("file_liste.ser");
            o = new ObjectInputStream(fis);
            date = (Date)o.readObject();
            files_alt = (ArrayList<String>)o.readObject();
        } catch (IOException ex) {
            Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                o.close();
            } catch (IOException ex) {
                Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return files_alt;
    }
    
    public void vergleicheListe() {
        ArrayList<String> files_alt = leseListe();
        for(String s : files) {
            if(Collections.binarySearch(files_alt, s) < 0) {
                System.out.println(s + " wurde gelöscht");
            }
        }
    }
}

Dann erzuege ich ein Object der Klasse und führe vergleicheListe() aus
 
S

SlaterB

Gast
du erstellst also eine Liste, schreibst und liest sie (was hat das mit dem Problem zu tun?)
und dann suchst du alle ihre Elemente in der Kopie der Liste,
alle werden gefunden, was ist jetzt die Frage?

> Wenn ich jetzt eine Datei gelöscht habe, dann wird das nicht ausgegeben

was hat das Löschen der Datei mit deiner String-Liste zu tun?

Code:
public class Liste2
{
    ArrayList<String> files = new ArrayList<String>();
    Date date;

    public Liste2(File f)
    {
        sucheOrdner(f);
        Collections.sort(files);
        System.out.println("Liste erstellt: \t" + files.size() + " Ordner, " + files);
        speichereListe();
    }

    private void sucheOrdner(File f)
    {
        File[] root = f.listFiles();
        if ((root = f.listFiles()) != null)
        {
            for (int i = 0; i < root.length; i++)
            {
                if (root[i].isDirectory())
                {
                    files.add(root[i].getPath());
                    sucheOrdner(root[i]);
                }
            }
        }
    }

    private void speichereListe()
    {
        ObjectOutputStream o = null;
        try
        {
            OutputStream fos = new FileOutputStream("file_liste.ser");
            o = new ObjectOutputStream(fos);
            o.writeObject(new Date());
            o.writeObject(files);

        }
        catch (IOException ex)
        {
            Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally
        {
            try
            {
                o.close();
            }
            catch (IOException ex)
            {
                Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    private ArrayList<String> leseListe()
    {
        ArrayList<String> files_alt = null;
        ObjectInputStream o = null;
        try
        {
            InputStream fis = new FileInputStream("file_liste.ser");
            o = new ObjectInputStream(fis);
            date = (Date)o.readObject();
            files_alt = (ArrayList<String>)o.readObject();
        }
        catch (IOException ex)
        {
            Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (ClassNotFoundException ex)
        {
            Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally
        {
            try
            {
                o.close();
            }
            catch (IOException ex)
            {
                Logger.getLogger(Liste2.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return files_alt;
    }

    public void vergleicheListe()
    {
        ArrayList<String> files_alt = leseListe();
        System.out.println("lese: " + files_alt);
        for (String s : files)
        {
            System.out.println("s: " + s + " -> " + Collections.binarySearch(files_alt, s));
            if (Collections.binarySearch(files_alt, s) < 0)
            {
                System.out.println(s + " wurde gelöscht");
            }
        }
    }

    public static void main(String[] args)
    {
        Liste2 l = new Liste2(new File("C:/temp/a"));
        l.vergleicheListe();
    }
}

-----

Liste erstellt: 	2 Ordner, [C:\temp\a\b, C:\temp\a\c]
lese: [C:\temp\a\b, C:\temp\a\c]
s: C:\temp\a\b -> 0
s: C:\temp\a\c -> 1
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
districon 2D Array - Zeilen und Spalten durchsuchen Java Basics - Anfänger-Themen 3
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
F Array nach Objektattribut durchsuchen Java Basics - Anfänger-Themen 6
O ArrayList oberflächig durchsuchen Java Basics - Anfänger-Themen 3
M Array nach String durchsuchen und zurückgeben Java Basics - Anfänger-Themen 16
Orkanson Best Practice Array Diagonal durchsuchen Java Basics - Anfänger-Themen 2
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
M CSV Datei durchsuchen Java Basics - Anfänger-Themen 4
M Array nach Zehnen durchsuchen. Java Basics - Anfänger-Themen 25
C String durchsuchen Java Basics - Anfänger-Themen 4
MiMa Lösungsansatz fürText durchsuchen mit Stichwörter Java Basics - Anfänger-Themen 9
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
F Mehrdimensionales Array durchsuchen Java Basics - Anfänger-Themen 8
P Input/Output Arraylist nach String eines Objekts durchsuchen Java Basics - Anfänger-Themen 26
X Probleme beim rekursiven Durchsuchen von Verzeichnissen Java Basics - Anfänger-Themen 1
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
S Zahlen Array durchsuchen Java Basics - Anfänger-Themen 6
F Map nach Werten durchsuchen Java Basics - Anfänger-Themen 3
S Ordnerstrukturen durchsuchen und Files bearbeiten Java Basics - Anfänger-Themen 6
W Array nach String durchsuchen und Ausgeben Java Basics - Anfänger-Themen 8
O Objekte nach Attributen durchsuchen Java Basics - Anfänger-Themen 10
R 2 mit Arrays bestückte LinkedLists durchsuchen/vergleichen Java Basics - Anfänger-Themen 3
S Array durchsuchen Java Basics - Anfänger-Themen 3
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
I String durchsuchen Java Basics - Anfänger-Themen 2
L Logdatei durchsuchen, Suchstand abspeichern? Java Basics - Anfänger-Themen 9
I ArrayList<EigeneKlasse> durchsuchen Java Basics - Anfänger-Themen 2
K CSV durchsuchen und bearbeiten Java Basics - Anfänger-Themen 1
H String einlesen, in .txt durchsuchen und Ergebnisse ausgeben Java Basics - Anfänger-Themen 22
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
R Erste Schritte API durchsuchen Java Basics - Anfänger-Themen 5
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
J Dynamische Liste durchsuchen + anpassen Java Basics - Anfänger-Themen 3
S Text mit Programm einlesen und durchsuchen Java Basics - Anfänger-Themen 8
O Quellcode nach bestimmter Ausgabe durchsuchen Java Basics - Anfänger-Themen 14
M String nach Zahlen durchsuchen Java Basics - Anfänger-Themen 21
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
F Textfile auslesen und durchsuchen Java Basics - Anfänger-Themen 13
F String durchsuchen Java Basics - Anfänger-Themen 11
L eingegebene Strings nache Eigenschaften durchsuchen. Java Basics - Anfänger-Themen 25
B ArrayList nach Wiederholungen durchsuchen Java Basics - Anfänger-Themen 2
K OOP Objektgefülltes Array nach minWert durchsuchen Java Basics - Anfänger-Themen 5
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
R liste durchsuchen Java Basics - Anfänger-Themen 6
K Klassen String - nach Wort durchsuchen Java Basics - Anfänger-Themen 6
R Verzeichnisse rekursiv nach Dateiduplikaten durchsuchen Java Basics - Anfänger-Themen 5
W Variablen durchsuchen Java Basics - Anfänger-Themen 5
B Zweidimensionales Array durchsuchen und ändern Java Basics - Anfänger-Themen 8
C Strings durchsuchen und umwandeln Java Basics - Anfänger-Themen 4
P String durchsuchen Java Basics - Anfänger-Themen 17
StupidAttack Html Code durchsuchen Java Basics - Anfänger-Themen 2
G Datentypen "Liste" eigener Objekte durchsuchen Java Basics - Anfänger-Themen 6
J geschickter Algorithmus um die 'Umgebung' einer stelle eines Arrays zu durchsuchen Java Basics - Anfänger-Themen 7
S String nach Ausdruck durchsuchen und Folgeattribut ausgeben Java Basics - Anfänger-Themen 3
N OOP Dynamische Objekte und nach Parametern durchsuchen Java Basics - Anfänger-Themen 4
H Datei durchsuchen mit Regex-Ausdruck Java Basics - Anfänger-Themen 14
D schnelles durchsuchen von Dateien Java Basics - Anfänger-Themen 29
R String einlesen, Textdatei danach durchsuchen und aus Zeile Objekt erzeugen Java Basics - Anfänger-Themen 5
O Sämtliche Textdateiformat durchsuchen Java Basics - Anfänger-Themen 2
O Performant große Dateien durchsuchen Java Basics - Anfänger-Themen 8
X regex frage (durchsuchen) Java Basics - Anfänger-Themen 2
N Fragen zu String durchsuchen und verarbeiten Java Basics - Anfänger-Themen 23
N Array durchsuchen Java Basics - Anfänger-Themen 7
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
J ArrayList nach Objekten durchsuchen Java Basics - Anfänger-Themen 2
S Sortierte LinkedList nach Variablen durchsuchen und nicht nach INDEX Java Basics - Anfänger-Themen 6
U ArrayList nach Zahlen durchsuchen? Java Basics - Anfänger-Themen 8
M Eclipse: Durchsuchen aller Dateien? Java Basics - Anfänger-Themen 1
M Ordner der jar Datei herausfinden und Partent durchsuchen Java Basics - Anfänger-Themen 4
A Verzeichnisse nach Datei / Ordner durchsuchen Java Basics - Anfänger-Themen 11
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
hdi Ornderübersicht (durchsuchen) für Öffnen/Speichern Java Basics - Anfänger-Themen 4
B Text nach Signalwörtern durchsuchen Java Basics - Anfänger-Themen 4
G String durchsuchen Java Basics - Anfänger-Themen 4
T treeSet durchsuchen Java Basics - Anfänger-Themen 2
K Bytearray durchsuchen! Java Basics - Anfänger-Themen 6
G String durchsuchen Java Basics - Anfänger-Themen 14
S Arraylist durchsuchen und werte speichern Java Basics - Anfänger-Themen 14
M String durchsuchen Java Basics - Anfänger-Themen 2
T Ordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 2
G array (BigInteger) durchsuchen Java Basics - Anfänger-Themen 2
S Inhalt von Array nach Zahl durchsuchen Java Basics - Anfänger-Themen 5
O Überladene Methode + durchsuchen der ArrayList Java Basics - Anfänger-Themen 14
M Sortierte Liste nach Wert durchsuchen Java Basics - Anfänger-Themen 8
J Hashmap durchsuchen Java Basics - Anfänger-Themen 2
N Unterordner durchsuchen Java Basics - Anfänger-Themen 2
T Datei nach Schlüsselwörtern durchsuchen Java Basics - Anfänger-Themen 7
O Liste durchsuchen Java Basics - Anfänger-Themen 2
M Problem bei String durchsuchen Java Basics - Anfänger-Themen 7
I Dateien durchsuchen Java Basics - Anfänger-Themen 12
P string im ganzen file durchsuchen Java Basics - Anfänger-Themen 13
D Zeichenketten durchsuchen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben