2016-05-24 16 views
-4

Ich habe dieses Problem, nach dem ich im Netz gesucht habe und mir geholfen werden konnte ... Ich sah auch andere Fragen und sie funktionierte nicht ich weiß nicht warum ... also ich brauchen Ihre Hilfe ....Hinzufügen eines Elements zu einem HashSet in einer HashMap Java

das ist also ein Bereich, in dem ich die HashMap erstellen:

private HashMap <String,HashSet<String>> userBuisness = new HashMap <String,HashSet<String>>(); 

Und das ist mein Versuch, ein Element hinzuzufügen (i nehme eine Zeile aus einer Datei, i geteilt es und dann füge ich diese Elemente meiner HashMap hinzu):

String output = inputReader.nextLine(); 
String fields[] = output.split("\t"); 
userBuisness.put(fields[0],fields[1]); 
+1

'Felder [1]' ist ein 'String', kein' HashSet '. Sie können letzteres mit 'new HashSet <> (Arrays.asList (fields [1]))' erstellen. –

+1

Andy hat dir gesagt, wie man einen solchen Eintrag in die Karte einfügt. Aber ... warum brauchst du einen 'HashSet ' Typ für deine Kartenwerte? Ihr Code-Snippet zeigt, dass Sie nur einen typisierten Wert eingeben. – Seelenvirtuose

+0

@Seelenvirtuose das ist, was mein Projekt fragt –

Antwort

0

Wie @AndyTurner sagte in einem Kommentar:

fields[1] ist ein String, kein HashSet<String>. Sie können Letzteres mit new HashSet<>(Arrays.asList(fields[1])) erstellen.

Aber es gibt auch andere Probleme mit diesem Snippet. Es wäre besser, so zu umschreiben, achten auf jedes Detail, dass ich geändert:

private Map<String, Set<String>> userBusiness = new HashMap<>(); 

... 

String[] fields = output.split("\t"); 
userBusiness.put(fields[0], new HashSet<>(Collections.singletonList(fields[1]))); 
+0

Sie wissen, ich wette, dass Code in einer Schleife ist, und wenn Eingabe ist "AB", "AC", sollte das Ergebnis sein '{A = [B, C]}' , nicht der '{A = [C]}' dieser Code gibt. Ansonsten, warum mach es zu einem Karten-Set, oder? – Andreas

+0

ja es ist in einer while-Schleife. Bis die Datei die nächste Zeile hat –

Verwandte Themen