Eine Liste von Listen erstellen

Diskutiere Eine Liste von Listen erstellen im Java Basics - Anfänger-Themen Forum; Hallo, Ich will eine Liste von Adressbüchern erstellen und jedes Adressbuch soll seine eigene Liste von Kontakten haben. Bei mir ist es dann...

  1. joo
    joo Neues Mitglied
    Hallo,
    Ich will eine Liste von Adressbüchern erstellen und jedes Adressbuch soll seine eigene Liste von Kontakten haben.
    Bei mir ist es dann leider so, dass alle Adressbücher die selber Liste teilen. Also wenn ich ein Kontakt in ein Adressbuch einfüge landet es automatisch auch in den anderen.
    Hat jemand vielleicht eine Idee wie ich das machen kann?
    Ich würde mich um jede Hilfe freuen
     
  2. Vielleicht hilft dir dieses Buch hier weiter.
  3. httpdigest
    httpdigest Bekanntes Mitglied
    Gebe jedem Adressbuch seine eigene Liste.
     
  4. joo
    joo Neues Mitglied
    Ich habe auch daran gedacht, aber ich weiß ehrlich gesagt nicht wie ich das machen soll
     
  5. httpdigest
    httpdigest Bekanntes Mitglied
    z.B.: mit dem `new` Operator, à la `new ArrayList()`
     
  6. httpdigest
    httpdigest Bekanntes Mitglied
    Ohne, dass du auch nur eine einzige Zeile von deinem Code zeigst, kann man dir unmöglich spezifischere Hilfestellung geben.
    Aktuell liest sich deine Frage als nicht viel mehr als "Mein für euch unbekannter Code funktioniert nicht. Warum?"
     
  7. joo
    joo Neues Mitglied
    das ist meine Klasse für die Addressbücher:
    Code (Java):

    public class AddressBook1 {
        public static AddressEntry head;
     
            AddressBook next;
            String name;

    public AddressBook(String name,AddressEntry head, AddressBook next) {
           
              this.name = name;
              this.next = next;
              this.head = head;
    }
    }
     
    Die Klasse für die Kontakte:
    Code (Text):
    public class AddressEntry1{
        public String nameOfContact;

        public AddressEntry nextentry;

     
     
        public AddressEntry(String nameOfContact, AddressEntry nextentry) {
     
            this.nameOfContact = nameOfContact;
         
            this.nextentry = nextentry;
        }
    }
    in dieser Klasse sollen die Listen erstellt werden:
    Code (Java):

    public class Erstellung1 {

        public static AddressEntry head;
        public static AddressEntry last;
        public static AddressBook headbook;
        public static AddressBook lastbook;
     
     
        public Erstellung() {
         
            this.headbook = null;
            this.lastbook = null;
        }
     
        public static String add_addressbook(String name){
             AddressEntry head = null ;
              AddressBook booknew = new AddressBook(name,head,null);
         
              if(headbook == null && name.matches("\\b[a-z]+\\b") == true) {
                   headbook = booknew;
                   lastbook = booknew;
              }
           
              if(name.matches("\\b[a-z]+\\b") == true) {
               booknew.next = headbook;
               headbook = booknew;
              }
                 
              else {

               throw new IllegalArgumentException("Error, Name muss aus Kleinbuchstaben bestehene");
              }
              return "OK";
                }

            public static String add_contact( String name,String nameOfContact ) {
             
                AddressEntry newentry = new AddressEntry(nameOfContact,null);
                    AddressEntry entry = head;
             
             
                if(nameOfContact.matches("\\b[a-z]+\\b") == true ) {
                 
                    if(head == null) {
                     
                        head = newentry;
                       
                    } else {
                         while(entry.nextentry!=null) {
                             entry = entry.nextentry;
                           
                         }
                        entry.nextentry = newentry;
                        }}
                else {
                    throw new IllegalArgumentException();
                }
             
     
                int ID = ID(name,nameOfContact);
            return String.format("%04d", ID);
            }
    }
     
  8. mihe7
    mihe7 Bekanntes Mitglied
    Das Schlüsselwort static dient dazu, eine Variable/Methode einer Klasse statt einem Objekt zuzuordnen. Diese sog. Klassenvariablen/-methoden existieren somit auch ohne ein Objekt. Beispielsweise gibt es z. B. die Variable AddressBook.head nur einmal in der ganzen Anwendung, ganz gleich, wie viele Objekte von AddressBook du auch anlegst. NB: ich gehe davon aus, dass die 1 am Ende der Klassennamen in Deinem Code ein Versehen ist.

    Im Konstruktor von AddressBook überschreibst Du die Klassenvariable head (via this.head; das this ist hier etwas irreführend). Folglich teilen sich alle AddressBook-Objekte den "head" des zuletzt angelegten Objekts.

    Kurz: schmeiß static überall raus (außer in der main-Methode natürlich).
     
    InDerNot gefällt das.
  9. InDerNot
    InDerNot Neues Mitglied
    Code (Text):
    import java.util.*;

    public class MyClass {
       
        private static final List<AddressBook> ADDRESS_BOOK_LIST = new ArrayList<>(); // Erstellt eine konstante statische Liste mit Adressbüchern.
       
        public static void main( String[] args ) {
            AddressBook addressBook = new AddressBook(); // Erstellt eine neue Instanz/neues Adressbuch
            addressBook.getContactsList().add( "Kevin 01" ); // Fügt einen Kontakt hinzu
            addressBook.getContactsList().add( "Thomas 02" ); // Fügt einen Kontakt hinzu
            ADDRESS_BOOK_LIST.add( addressBook ); // Fügt die aktuelle Adressbuch in die konstante statische Liste hinzu
           
            addressBook.readAllContacts();
        }
       
    }

    class AddressBook {
       
        private List<String> contactsList = new ArrayList<>(); // Eine Liste in einem Adressbuch, wo alle Kontakte gespeichert werde
       
        public List<String> getContactsList() { // Getter für die Kontakte
            return contactsList;
        }
       
        public void readAllContacts() { // Gibt alle Kontakte aus
            for ( int i = 0; i < contactsList.size(); i++ ) {
                System.out.println( contactsList.get( i ) );
            }
        }
       
    }
     
    Kurz in der Pause gemacht mit einem Online Editor. Wenn du fragen hast, kannst du diese stellen.
     
    joo gefällt das.
  10. joo
    joo Neues Mitglied

    Vielen Dank Für die Antwort!
    Ich habe mir den Code angeschaut , aber leider kom ich an einem Punkt nicht weiter.
    Ich muss den Adressbüchern Namen geben und die Kontakte dieses Adressbuches mit dem Namen abrufen können.
    Hast du vielleicht eine Idee dazu?
     
  11. mihe7
    mihe7 Bekanntes Mitglied
    Randbemerkung: die Lösung @InDerNot verwendet keine verkettete Liste. Falls das die Anforderung ist, musst Du das lösen wie zuvor.

    Wenn Du aus der Java API verwenden darfst, was Du willst, ist es einfach. Ändere List zu Map:
    Code (Java):

    private static final Map<String, AddressBook> ADDRESS_BOOK_LIST = new HashMap<>();
     
    Und füg die Adressbücher mit Namen ein:
    Code (Java):

    ADDRESS_BOOK_LIST.put( "joo", addressBook );
     
    Und greif über den Namen auf das Adressbuch zu:
    Code (Java):

    ADDRESS_BOOK_LIST.get( "joo").readAllContacts();
     
     
  12. Wenn du Java lernen möchtest, empfehlen wir dir dieses Buch hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Eine Liste von Listen erstellen - Ähnliche Themen

Über eine einfach verkettete Liste
Über eine einfach verkettete Liste im Forum Java Basics - Anfänger-Themen
Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff
Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff im Forum Allgemeine Java-Themen
Daten aus zwei Verschiedenen Tabellen in eine ArrayListe
Daten aus zwei Verschiedenen Tabellen in eine ArrayListe im Forum Java Basics - Anfänger-Themen
Verkettete Liste und seine Methoden
Verkettete Liste und seine Methoden im Forum Java Basics - Anfänger-Themen
Erstellung eines Listeneintrags einer verketteten Liste
Erstellung eines Listeneintrags einer verketteten Liste im Forum Java Basics - Anfänger-Themen
Thema: Eine Liste von Listen erstellen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. adressbuch java liste