Collections Probleme mit contains()-Methode [LinkedList]

  • Themenstarter Themenstarter Ro0kie
  • Beginndatum Beginndatum
R

Ro0kie

Gast
Liebes java-forum.org!

Ich habe folgende Methode :
Java:
public boolean bearbeiten(String name,String email, String neuEmail){
         LinkedList emailsliste = new LinkedList<String>();
         emailsliste.add( mails.get(name));
         if(emailsliste.equals(email)){
             emailsliste.add(neuEmail);
             emailsliste.remove(email);
             mails.put(name,emailsliste); //TreeMap überschreibt den Eintrag automatisch.
             return true;
         }
         else{
             return false;
         }
In meiner Testkalsse :
Java:
import java.util.LinkedList;


/**
 * Testklasse der Klasse Emailadress.
 *
 * @author Martin S
 * @version 2011-05-29
 */
public class EmailadressTest {
    public static void main(String[] args){
        
        LinkedList mails = new LinkedList<String>();
        mails.add("martin.s@gmail.com");
        mails.add("lamaprd_0123@hotmail.com");

        LinkedList mails2 = new LinkedList<String>();
        mails2.add("test2@mail.com");


        Emailadress emailbook = new Emailadress();
        emailbook.hinzufuegenNeu("Martin",mails);
        emailbook.hinzufuegen("Martin","test@mail.com");
        emailbook.hinzufuegenNeu("TestUser",mails2);
        System.out.println(""+emailbook.zuArray());
        boolean erfolgreich =emailbook.bearbeiten("TestUser","test2@mail.com","test3@mail.at");
        System.out.println(""+erfolgreich);
    }

}

Meine Ausgabe ist aber die Folgende :
Martin : [[martin.s@gmail.com, lamaprd_0123@hotmail.com], test@mail.com]
TestUser : [test2@mail.com]

false
_______________________________________________
Wieso , die Methode
Code:
contains()
benutzt doch die Methode
Code:
equals()
?!

Danke im Vorhinein! :toll:
 
es wäre besser wenn du mehr als eine halb-passende Begründung für deine Frage liefern würdest,
warum genau sollte irgendetwas funktionieren, an welcher Stelle was passiert exakt was, welche Objekte werden verglichen, welche sollten gleich sein usw.

kann man natürlich auch andere analysieren lassen:
die wichtigste Entscheidung dürfte in
> if(emailsliste.equals(email)){
liegen, was haben wir da?
emailsliste ist eine Liste, email ein String, eine Liste kann nie equal zu einem String sein, ergo nicht true,
war das schon schwer?

evtl. möchtest du hier contains verwenden, so heißt ja auch dein Thema, nur steht contains() nirgendwo im Code?

es ist aber auch dann noch anzunehmen, dass
> emailsliste.add( mails.get(name));
eine Liste in die Liste einfügt, wenn emailsliste eine Liste enthält und keinen String, dann wird auch contains(String) erstmal immer false liefern
 
> if(emailsliste.equals(email)){
liegen, was haben wir da?
emailsliste ist eine Liste, email ein String, eine Liste kann nie equal zu einem String sein, ergo nicht true,
war das schon schwer?

es ist aber auch dann noch anzunehmen, dass
> emailsliste.add( mails.get(name));
eine Liste in die Liste einfügt, wenn emailsliste eine Liste enthält und keinen String, dann wird auch contains(String) erstmal immer false liefern

und wie würde das dann richtig aussehen ?
 
richtige Postings wären mehr Text von dir als von mir, aber mein Gemecker auch nicht zu ernst nehmen 😉

ein Tipp:
speichere mails.get(name) in einer eigenen List-Variable,
bringt dich das auf Ideen?
 
sorry, am Wochenende bin ich lange nicht da,

das setzt voraus, dass ich erst interpretiere was du vorher meintest und wie du es jetzt hast, ganz schön variable Aufgabe,
aber es dürfte doch klar sein:
List mit String drin: contains(String) liefert true, contains(List) und sonstiges liefert false
List mit List mit String drin: contains(String) liefert false, contains(List) liefert true
 

Zurück
Oben