removeAll()

dbit

Mitglied
hallo zusammen,
nach mehreren tagen suchen und versuchen komme ich einfach nicht weiter.

es geht um removeAll(). ich möchte gerne aus einer Liste(bList) alle einträge
aus der Liste(aList) löschen. innerhalb einer klasse funktioniert es auch wunderbar.
beispiel:
........................................................................
........................................................................
Java:
public class dbbListenDemo {
    
 public static void erzeugeListe(){
        LinkedList aliste = new LinkedList();
        LinkedList bliste = new LinkedList();
        
        aliste.add("A");
        aliste.add("b");
        aliste.add("c");
        aliste.add("D");
        aliste.add("e");
        
        bliste.add("b");
        bliste.add("A");
        bliste.add("1");
        bliste.add("2");
        
        System.out.println(aliste + "\n" + bliste);
        
        System.out.println("\nListen abgleichen...");
        bliste.removeAll(aliste);
        System.out.println(bliste);
    }
.........................................................................
.........................................................................
so funkt. es wunder bar.

sobald ich das klassenübergreifen wenn ich es so nennen darf anwende,
bekomme immer eine leere liste zurück.
code klassenübergreifend:
........................................................................
........................................................................
Java:
vergleiche.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent ae) {
             reportfenster.setText("");

             //Liste A
             //dbbLESEDATEI ListeA = new dbbLESEDATEI();
             List aList = dbbLESEDATEI.lese((pfadA.getText()));
             System.out.println("................\n" + aList + "\n................");
             reportfenster.setText(reportfenster.getText() + "ListeA: \n" + aList + "\n");
             
             //Liste B
             //dbbLESEDATEI ListeB = new dbbLESEDATEI();
             List bList = dbbLESEDATEI.lese((pfadB.getText()));
             System.out.println("................\n" + bList + "\n................");
             reportfenster.setText(reportfenster.getText()  + "ListeB: \n" + bList + "\n");

             bList.removeAll(aList);
             System.out.println("//\\DELTA: \n" + bList);          <<<<<<<<<<<<<<<<<<<<<<<<<---hier kommt eine leere liste
             reportfenster.setText(reportfenster.getText()  + "........... \n" + bList + "\n");
             
             //System.out.println(dbbLESEDATEI.lese(pfadA.getText()));
........................................................................
........................................................................


kann mir jemand helfen? vielleicht ist es wie immer ganz einfach. danke im voraus.
ICH WÜNSCHE FROHE OSTERN UND VIELE BUNTE EIER!
 
Zuletzt bearbeitet:

Fab1

Top Contributor
Hi,

was ist denn so der Inhalt von
Code:
pfadA.getText()
und
Code:
pfadB.getText()
?
 

Dekker

Bekanntes Mitglied
Java:
List aList = dbbLESEDATEI.lese((pfadA.getText()));
List bList = dbbLESEDATEI.lese((pfadB.getText()));

Rein theoretisch würde ich bei diesen Zeilen den Fehler suchen. Wir kennen die Klasse dbbLESEDATEI und ihre Funktion lese leider nicht. Bist du dir sicher das aList und bList auch wirklich dem entsrpechen was du erwartest? Kann es sein das du hier Steuerzeichen die du nicht sehen kannst miteingelesen hast und deshalb was nicht stimmt? Ist vielleicht
Code:
pfadA.getText().equals(pfadB.getText()) == 1
? Fragen über Fragen die dir keiner beantworten kann wenn wir nur so wenig Code kennen.

Edit: Auch interessant für Überlegungen ist die Frage ob removeAll bei LinkedList und List gleich reagiert. Allerdings denke ich das sollte kein Problem sein.
 
Zuletzt bearbeitet:

dbit

Mitglied
hallo alle zusammen,
wahrscheinlich seid ihr noch bei osterfeuer. :)

erst einmal die fehlende klasse "dbbDATEILESEN":

Java:
public class dbbLESEDATEI {
    
    //public static LinkedList liste = new LinkedList();
    public static List<String> liste = new LinkedList<String>();
    
    public static List lese(final String pfadlesedatei){
     liste.clear();
     BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(new File(pfadlesedatei)));
            String line = null;
                while ((line = br.readLine()) != null) {
                // Ganze Zeile:
                // System.out.println(line);                
                String[] importID = line.split(";");
                    for (int i = 0; i < importID.length; i++) {
                    liste.add(importID[i]);
                    System.out.println(importID[i]);

            }
        }
                
    //Fehlermeldungen
    }catch(FileNotFoundException e){
            dbb.dbbMSG.globalMSG("DateiFehler1", "ausrufezeichen_.gif", "", "Fehlercode1: "+e, 800, 100);
            System.out.println("Dateifehler1: " + e);
        }
    
    catch(IOException e) {
            dbb.dbbMSG.globalMSG("DateiFehler2", "ausrufezeichen_.gif", "", "Fehlercode2: "+e, 800, 100);    
            System.out.println("Dateifehler2: " + e);
    }
    return liste;
    }
}

diese klasse importiert inhalt einer datei.
der pfad wird als string(pfadA --> pfadlesedatei) aus "JtextField" übergeben.
die klasse returnt eine liste. die liste habe ich als linkedlist, arraylist und
als list getestet.
das gibt die konsole raus:
####################################################
####################################################
run:
1
2
................
[1, 2] <<<---aList
................
1
2
3
................
[1, 2, 3] <<<---bList
................
//\DELTA:
[] <<<---bList nach dem removeAll()
####################################################
####################################################

wie man sieht liefert die klasse zweimal die liste mit inhalt.
nach removeAll() ist die bListe leer muss aber theoretisch noch die "3" beinhalten.
sollten noch mehr infos fehlen so sagt bitte bescheid, werde so schnell
wie möglich die online stellen.

ps. soviel ich weiß reagiert removeAll() bei LinkedList gleich wie bei ArrayList was mich eigentlich wundert.
 
I

IMartin

Gast
Code:
aList
und
Code:
bList
sind die gleiche Liste, nämlich die static List aus
Code:
dbbLESEDATEI
. Wenn
Code:
dbbLESEDATEI
jedes Mal eine neue Liste zurückliefert, sollte das Ergebnis sein wie gewünscht.
 

dbit

Mitglied
hallo IMartin,
die listen sind doch unterschiedlich:

aList(das ist auch der inhalt der datei)
................
[1, 2] <<<---aList
................

bList(das ist auch der inhalt der datei)
................
[1, 2, 3] <<<---bList
................
 

dbit

Mitglied
oh, stimmt die listen sind gleich, klar nach dem
Code:
removeAll()
ist die
Code:
bListe
leer.
Also muss ich die listen clonen oder?

so müsste es jetzt funken.:
Java:
.
.
.

             List aList = dbbLESEDATEI.lese((pfadA.getText()));
             List aaList = new LinkedList(aList);
.
.
.
             List bList = dbbLESEDATEI.lese((pfadB.getText()));
             List bbList = new LinkedList(bList);
.
.
.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Set - addAll, removeAll..? Allgemeine Java-Themen 8

Ähnliche Java Themen


Oben