向名为MailServer
的{{1}}类添加一个方法,该类遍历用户,打印出每个用户名,并打印出与该用户关联的所有电子邮件。
我无法弄清楚如何打印出printAllMessages
形式的电子邮件内容。
这是我的代码:
ArrayList
答案 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]
您可以根据自己的要求调整示例。
修改强>
您收到错误是因为您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());
}
}