printAllMessages():遍历用户,打印出每个用户名,并打印出与该用户关联的所有电子邮件

时间:2015-10-28 23:43:40

标签: java

向名为MailServer的{​​{1}}类添加一个方法,该类遍历用户,打印出每个用户名,并打印出与该用户关联的所有电子邮件。

我无法弄清楚如何打印出printAllMessages形式的电子邮件内容。

这是我的代码:

ArrayList

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了你的问题。我认为您的map值为list of emails。这是一个简单的示例,演示如何使用列表作为值打印hashmap。

Map<String, List<Integer>> map = new HashMap<String, List<Integer>>() {{
    put("a", Arrays.asList(0,1,2,3,4));
    put("b", Arrays.asList(5,6,7,8,9));
}};


for (Map.Entry<String, List<Integer>> entry: map.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue().toString());
}

输出:

  

a [0,1,2,3,4]

     

b [5,6,7,8,9]

Demo

您可以根据自己的要求调整示例。

修改 您收到错误是因为您keySet返回了一组密钥。如果您只想要特定用户的电子邮件,那么根据我的示例,您可以使用get来返回映射到该字符串的arraylist

System.out.println(map.get("a").toString());

<强> EDIT2: 由于MailItem是一个对象,因此您可以将地图值分配给列表。然后,您可以遍历列表以打印该特定用户的所有电子邮件。

简单示例:

List<String> list = new ArrayList<String>();
String string = "";
Ideone(String a) { string = a; }

public String getString() {
    return this.string;
}

public static void main (String[] args) throws java.lang.Exception
{
    Ideone idA = new Ideone("a");
    Ideone idB = new Ideone("b");

    Map<String,List<Ideone>> map = new HashMap();

    map.put("john",new ArrayList<Ideone>(Arrays.asList(idA, idB)));

    List<Ideone> stringList = map.get("john");

    for (Ideone id: stringList) {
        System.out.println(id.getString());
    }
}

Demo for EDIT2