2016-03-31 2 views
0

aktualisiert habe ich diese Schule Frage:ein Set aus einem Map Argumente in Java

Das Verfahren sollte kehren keinen Wert, sondern sollte als Argument eine Karte, deren Schlüssel-Strings und deren Werte sind ganze Zahlen nehmen. Die Strings repräsentieren Personenzahlen und die ganzen Zahlen die jeweiligen Verkaufszahlen. Die Karteneinträge müssen nicht in einer bestimmten Reihenfolge sein.

Für jede Person in Person Stellen Sie Ihre Methode sollte überprüfen, ob seine PersonNumber einer der Schlüssel in der Karte ist. Wenn dies der Fall ist, sollten die Verkäufe für diese Person um den Kartenwert erhöht werden, der diesem Schlüssel entspricht.

Dies ist der Code, den ich habe, offensichtlich ist es falsch, irgendwelche Zeiger?

public void updatePersons (Map<String, Integer> pers) 
    { 
    for (Persons all : personSet) 
    { 
     if (all.getPersonNumber().equals(pers.keySet())) 
     { 
      personSet.add(pers); 
     } 
    } 
    } 
+0

'personSet' enthält' Person' Objekte. Wie beabsichtigen Sie, diesen Satz mit einem von der Karte erhaltenen "Integer" -Wert zu aktualisieren? – Eran

+1

Das macht nicht viel Sinn. Ich denke, dass Ihr Datenmodell fehlerhaft sein könnte. Versuchen Sie, das Abstraktionsniveau in Ihrer Frage ein wenig zu erhöhen und vielleicht mehr Kontext bereitzustellen. –

+0

Bitte geben Sie den Code der 'Persons'-Klasse an. – slartidan

Antwort

0

Da eine Menge Code fehlt ich auf einigen Annahmen gerade arbeite:

Wenn Sie die Referenznummer der Personen in der Gruppe auf der Karte basierend aktualisieren möchten, können Sie es wie folgt tun :

for (Persons person: personSet) { 
    Integer reference = pers.get(person.getPersonNumber()); 
    if(reference != null) { 
    person.setReference(reference); 
    } 
} 

Sie iterieren über alle Personen und fragen die Karte nach dem Wert ab, der mit der Personennummer verknüpft ist. Wenn ein solcher Wert existiert, aktualisieren Sie die Person und fahren mit der nächsten Person fort.

Beachten Sie, dass, wenn die Referenznummer zum Sortieren des Satzes verwendet wird, Sie die Person entfernen und erneut einfügen müssen, um die Reihenfolge zu erhalten.

+0

Ich habe die Frage aktualisiert, würde die Antwort noch stehen? Vielen Dank! – seawork

+0

@seawork ja die Antwort steht immer noch nur mit dem Unterschied von "der Umsatz für diese Person sollte um den Kartenwert entsprechend diesem Schlüssel erhöht werden" - d. H. Sie müssen den Wert hinzufügen, anstatt ihn nur zu setzen. Außerdem sollten Sie uns die Frage/Aufgabe von Anfang an erklären, bevor Sie versuchen, sie in widersprüchlichen Aussagen/Code zu maskieren. – Thomas

+0

Ich habe nicht versucht, irgendwas zu verbergen, Kumpel, ich habe versucht, die Frage einfach zu halten. Danke – seawork