如何将名称与使用Java中的HashMaps的组织中的成员资格相匹配?

时间:2015-04-17 01:54:54

标签: java hashmap hashset sorted

所以这就是我的困境。我不知道从哪里开始。让我们说我给出了多个组织成员的列表,如下所示:

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的新手,我不知道如何去做这件事,所以我很感激能得到的所有帮助。

3 个答案:

答案 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>>