我有一个用户名列表和一个节点。我需要一个数据结构来保存有关给定节点上的用户名的信息。我需要像HashMap<String, ArrayList<String>
这样的东西,但我还需要在一个简单的(不是一堆不同的数组)上对整个用户名列表进行操作。该数据结构是否存在,或者我需要保留两个ArrayList
和HashMap
?
答案 0 :(得分:1)
HashMap<String, ArrayList<String>
对我来说似乎是一个合理的解决方案。我不认为这里需要定制结构。
对于使用用户名的操作,您可以使用.keySet()
或.entrySet()
(或任何迭代方法)。
答案 1 :(得分:1)
我喜欢您使用Map
的原始想法。我认为Map
对于这个问题来说是一个好的开始。
所有用户名都保证是唯一的吗?如果是这样,我会使用Set
而不是List
来表示用户名。也许您可以先将列表中的所有用户名转移到Set<Usernames>
,然后您可以遍历节点/用户名列表以生成Map<Node, Set<Usernames>>
。
您要跟踪Set<Usernames>
和Map<Node, Set<Usernames>>
,但我认为它会存储正确的数据,您可以对用户名集进行快速查找操作。
答案 2 :(得分:0)
如果Java中不存在某些内容,您可以尝试自行创建:
<强>节点强>:
public class Node {
List<User> users = new ArrayList<>();
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
用户强>:
public class User {
String username;
String name;
String surname;
// ...
}
如果您不需要复杂的对象,可以在List<String> usernames
中使用Node
。
然后,在你的应用中的某个地方:
public List<User> getUsersOfNode(Node node) {
return node.getUsers();
}
使用此操作比使用HashMap
更容易。
答案 3 :(得分:-1)
为什么不为此创建一个对象,包含3个私有字段(两个列表和一个映射)?