所以这就是我的困境。我不知道从哪里开始。让我们说我给出了多个组织成员的列表,如下所示:
John NAACP PETA NRA
Bill NRA WHO
Nancy NAACP NRA WHO
Jim PETA WHO
但是我想在另一个文件中列出所有可能的组织,然后输出这样的内容(组织按字母顺序排列,成员也按字母顺序排列,如果没有人,组织旁边没有名字在其中):
NAACP John Nancy
NRA Bill John Nancy
PETA Jim John
WHO Bill Jim Nancy
YEO
我是HashMaps的新手,我不知道如何去做这件事,所以我很感激能得到的所有帮助。
答案 0 :(得分:1)
尝试类似HashMap<String, ArrayList<String>>
的内容。将每个组织名称插入为空键ArrayList<String>
的String键。然后遍历人员列表=&gt;组织,逐个查找组织,并在该组织的ArrayList
中插入此人的姓名。
答案 1 :(得分:1)
不是最优雅的解决方案,但它会起作用
要将人员添加到列表,您可以使用以下代码:
Map<String, List<String>> storage = new
LinkedHashMap<String,List<String>>();
if(!storage.containsKey("NRA")){
storage.put("NRA", new ArrayList<String>());
}
storage.get("NRA").add("Bill");
storage.get("NRA").add("John Nancy");
要提取和打印人员,您可以使用以下代码:
for(Entry<String, List<String>> entry : storage.entrySet()){
String line = entry.getKey(); //getting company name
for(String name : entry.getValue()){ //extracting name from an array
line += " ";
line += name;
}
System.out.println(line); //printing the result
}
我没有在IDE中检查此代码,但除了可能的拼写错误之外它将起作用。
答案 2 :(得分:0)
为每个组织创建一个HashMap,例如HashMap<String,Boolean> memberOfNAACP = new HashMap<String,Boolean>();
。当您遍历成员并找到一个NAACP成员时,请运行memberOfNAACP.put("John",true)
。完成后,使用memberOfNAACP.keySet()
转储哈希的内容。如果您事先并不了解所有组织,请使用ArrayList
HashMap
,输入ArrayList<HashMap<String,Boolean>>
。