1. #1
    Avatar von Saad
    Registriert seit
    18.11.2011
    Beiträge
    786
    Thanked 621 Times in 219 Posts

    Standard Map - Wie eine Liste hinzufügen?

    Joo ! Ich hab da mal ein kleines problem und zwar:
    Ich hab ne' Map, die eben Kunden als Key hat und als Value eine Aufgabenliste zu den Kunden..

    Nun möchte ich ne' Methode habe, die eben eine Aufgabe zu der Liste des Kundens hinzufügt, nur ich hab halt keine Ahnung wie ich das wirklich realisieren soll xd
    Ich nehme mal an, dass die Übergabeparameter der Kundenname und eben die Aufgabe ist..
    (Ich hab noch eben zwei Klassen --> Kunde und Aufgabe)

    Würde mich freuen, wenn mir einer helfen kann. ;-)

    e: Ich benutz ne' TreeMap und ne' LinkedList.. es ist halt so, dass ich die ganze Zeit ne' CastException bekommen..
    Geändert von Saad (13.07.2013 um 19:06 Uhr)
    Bis auf Sonderschüler kannst du alle Leute fragen - Saad ist PERFEKT wie 'ne Zeitform der deutschen Sprache.

  2. #2

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Map - Wie eine Liste hinzufügen?

    Anhand der Informationen:

    public void addTask(final Kunde k, final Aufgabe a) {
    refToMap.get(k).add(a);
    }


    Vorausgesetzt du hast nicht den raw type von TreeMap genommen.
    Geändert von Mr. White (13.07.2013 um 19:15 Uhr)

  3. The Following User Says Thank You to Mr. White For This Useful Post:

    Saad (13.07.2013)

  4. #3
    Avatar von Saad
    Registriert seit
    18.11.2011
    Beiträge
    786
    Thanked 621 Times in 219 Posts

    Standard AW: Map - Wie eine Liste hinzufügen?

    Hey, danke erstmals für die schnelle Antwort, aber genau so habe ich das auch gemacht gehabt :-/

    Hier mal der Source:


    public class myDB {

    private Map<Kunde, List<Aufgabe>> myMap;
    private List<Aufgabe> myAufList;

    public myDB() {

    myMap = new TreeMap<Kunde, List<Aufgabe>>();
    myAufList = new LinkedList<Aufgabe>();
    }

    public void add(Kunde cust, Aufgabe task) {
    myMap.get(cust).add(task);
    }

    Wenn ich mit dem Debugger drüberschaue, dann bekomme ich noch immer diese CastException..
    Bis auf Sonderschüler kannst du alle Leute fragen - Saad ist PERFEKT wie 'ne Zeitform der deutschen Sprache.

  5. #4

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Map - Wie eine Liste hinzufügen?

    Implementiere in der Kunden-Klasse mal das Interface Comparable<T>.

  6. #5
    Avatar von Saad
    Registriert seit
    18.11.2011
    Beiträge
    786
    Thanked 621 Times in 219 Posts

    Standard AW: Map - Wie eine Liste hinzufügen?

    hab ich schon drinnen :-/

    Hier alle Klassen: (Hab sie bisschen umbenannt)
    [HIDE=25]Comparable Klasse
    Spoiler:

    public interface Comparable<T> {

    public int compareTo(T t);

    }


    Customer:
    Spoiler:
    public class Customer implements Comparable<Customer> {

    private static int nextID = 1;
    private final int ID = nextID++;
    private String fn = "";
    private String ln = "";

    public Customer(String firstN) throws Exception {
    if (firstN != null && firstN.length() > 0) {
    this.fn = firstN;
    } else {
    throw new NullPointerException("String is null or empty");
    }
    }

    public int compareTo(Customer cust) {
    return this.ln.compareTo(cust.ln);
    }

    }


    Repair:
    Spoiler:


    public class Repair implements Comparable<Repair> {

    private int basePrice = 0;
    private String description = "";

    public Repair(String des, int bPrice) throws Exception {
    if (des.length() != 0 && des != null && bPrice >= 0) {
    basePrice = bPrice;
    description = des;
    } else
    throw new Exception("An Exception happend @ Repair");
    }

    public int compareTo(Repair rep) {
    if (this.basePrice > rep.basePrice)
    return 1;
    else if (this.basePrice < rep.basePrice)
    return -1;
    else
    return 0;

    }

    public int basePrice() {
    return this.basePrice;
    }
    }


    DB:
    Spoiler:

    import java.util.*;

    public class DB {

    private Map<Customer, List<Repair>> myMap;
    private List<Repair> myRepList;

    public DB() {
    myMap = new TreeMap<Customer, List<Repair>>();
    myRepList = new LinkedList<Repair>();
    }

    public void add(Customer cust, Repair rep) {
    if (myMap.containsKey(cust)) { /* Checks, if cust exists already */
    myMap.get(cust).add(rep);
    } else {
    List<Repair> myRep = new LinkedList<Repair>();
    myMap.put(cust, myRep);
    myMap.get(cust).add(rep);

    }

    }

    public List<Repair> repairs(Customer cust) {
    return myMap.get(cust);
    }

    public List<Repair> remove(Customer cust) {
    if (myMap.containsKey(cust)) {
    myMap.remove(cust);
    return myMap.get(cust);
    } else {
    return null;
    }

    }

    public boolean remove(Customer cust, Repair rep) {
    if (myMap.containsKey(cust)) {
    myMap.get(cust).remove(rep);
    return true;
    } else {
    return false;
    }
    }

    public Set<Customer> customers() {
    return myMap.keySet();
    }

    }


    Demo:
    Spoiler:


    public class Demo {

    public static void main(String[] args) {

    try {
    Customer cust1 = new Customer("Fred");
    Customer cust2 = new Customer("Paul");
    Customer cust3 = new Customer("Karl");

    Repair rep1 = new Repair("rep1", 10);
    Repair rep2 = new Repair("rep2", 20);
    Repair rep3 = new Repair("rep3", 30);

    DB myDB = new DB();

    myDB.add(cust1, rep1);
    myDB.add(cust1, rep2);

    myDB.add(cust2, rep1);
    myDB.add(cust2, rep2);
    myDB.add(cust2, rep3);

    myDB.add(cust3, rep3);

    } catch (NullPointerException e) {

    e.getMessage();
    }

    catch (Exception e) {

    e.getMessage();
    }

    }
    }
    [/HIDE]
    Bis auf Sonderschüler kannst du alle Leute fragen - Saad ist PERFEKT wie 'ne Zeitform der deutschen Sprache.

  7. #6

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: Map - Wie eine Liste hinzufügen?

    Wieso definierst du ein eigenes Interface namens Comparable? Das sorgt nur für Verwirrung und es müsste mit dem vollqualifizierten Namen gearbeitet werden. Lösch' das Interface.

    Im Spoiler ist ein funktionierendes Minimalbeispielt:
    Spoiler:


    import java.util.*;

    public final class TreeMapDemo {
    public static void main(final String[] args) {
    final Map<Customer, List<Task>> map = new TreeMap<>();
    final Customer customer = new Customer("Max Mustermann");
    final List<Task> tasks = new LinkedList<>();
    tasks.add(new Task("Task #1"));
    tasks.add(new Task("Task #2"));

    map.put(customer, tasks);
    printTasks(map.get(customer));

    System.out.println("\n-----------------\n");

    // adding a task
    map.get(customer).add(new Task("ADDED"));
    printTasks(map.get(customer));
    }

    private static void printTasks(final List<Task> tasks) {
    for (final Task task : tasks) {
    System.out.println(task.getDesc());
    }
    }
    }

    final class Customer implements Comparable<Customer> {
    private final String name;

    Customer(final String name) {
    this.name = name;
    }

    @Override
    public int compareTo(final Customer other) {
    return name.compareTo(other.name);
    }

    public String getName() { return name; }
    }

    final class Task {
    private final String desc;

    Task(final String desc) {
    this.desc = desc;
    }

    public String getDesc() { return desc; }
    }


  8. The Following User Says Thank You to Mr. White For This Useful Post:

    Saad (13.07.2013)

  9. #7
    Avatar von Saad
    Registriert seit
    18.11.2011
    Beiträge
    786
    Thanked 621 Times in 219 Posts

    Standard AW: Map - Wie eine Liste hinzufügen?

    Ah es funktioniert.. lag wohl am Interface lol, danke dir :-D
    Geändert von Saad (13.07.2013 um 20:41 Uhr)
    Bis auf Sonderschüler kannst du alle Leute fragen - Saad ist PERFEKT wie 'ne Zeitform der deutschen Sprache.

Ähnliche Themen

  1. Lichtquelle hinzufügen
    Von !lkay im Forum Angebot & Nachfrage
    Antworten: 2
    Letzter Beitrag: 10.12.2013, 13:22
  2. mmc crashed bei Rolle hinzufügen
    Von xOneDirectionx im Forum Server-Administration
    Antworten: 3
    Letzter Beitrag: 21.06.2013, 23:19
  3. Antworten: 5
    Letzter Beitrag: 09.02.2013, 16:56
  4. Bild bearbeiten(Feuer hinzufügen)
    Von DnL im Forum Angebot & Nachfrage
    Antworten: 5
    Letzter Beitrag: 20.09.2012, 23:44
  5. Antworten: 3
    Letzter Beitrag: 01.01.2012, 18:35
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.