2017-06-19 1 views
1

Ich habe eine Liste von Benutzernamen und einer der Knoten. Ich brauche eine Datenstruktur, um Informationen darüber zu halten, welche Benutzernamen sich auf einem bestimmten Knoten befinden. Ich würde etwas wie HashMap<String, ArrayList<String> brauchen, aber ich muss auch die gesamte Benutzerliste in einem einfachen (nicht auf einer Reihe von verschiedenen Arrays). Existiert diese Datenstruktur oder muss ich zwei ArrayList und eine HashMap halten?Java: Wie binde ich Werte von zwei verschiedenen Arrays

Antwort

-1

Warum erstellen Sie kein Objekt mit 3 privaten Feldern (zwei Listen und eine Karte)?

0

Wenn etwas nicht in Java existieren können Sie versuchen, auf eigene Faust zu erstellen:

Knoten:

public class Node { 
    List<User> users = new ArrayList<>(); 

    public List<User> getUsers() { 
     return users; 
    } 

    public void setUsers(List<User> users) { 
     this.users = users; 
    } 
} 

Benutzer:

public class User { 
    String username; 
    String name; 
    String surname; 
    // ... 
} 

Sie können nur Verwenden Sie List<String> usernames in Ihrem Node, wenn Sie kein komplexes Objekt benötigen.

Dann irgendwo in Ihrer App:

public List<User> getUsersOfNode(Node node) { 
    return node.getUsers(); 
} 

mit diesem Betrieb ist einfacher als mit HashMap.

1

HashMap<String, ArrayList<String> scheint mir eine vernünftige Lösung. Ich sehe hier keine Notwendigkeit für benutzerdefinierte Strukturen.

Für die Operationen mit Benutzernamen können Sie .keySet() oder .entrySet() (oder eine andere Methode der Iteration) verwenden.

Siehe How to efficiently iterate over each Entry in a Map.

0

Ich mag Ihren ursprünglichen Gedanken über die Verwendung eines Map. Ich denke, ein Map wäre ein guter Anfang für dieses Problem.

Sind alle Benutzernamen garantiert eindeutig? Wenn ja, würde ich Set anstelle von List verwenden, um die Benutzernamen darzustellen. Vielleicht könnten Sie zuerst alle Benutzernamen in der Liste an eine Set<Usernames> übertragen, dann könnten Sie durch die Knoten/Benutzernamen Listen durchlaufen, um Ihre Map<Node, Set<Usernames>> zu generieren.

Sie würden die Set<Usernames> und eine Map<Node, Set<Usernames>> verfolgen, aber ich denke, es würde die richtigen Daten speichern und Sie könnten schnelle Nachschlagevorgänge auf den Benutzernamen festlegen.

Verwandte Themen