我正在尝试通过构建包含用户名作为键和用户对象作为值的映射来同步到用户列表。构建 map 后,我很难检索对象值。下面是我正在使用的代码。
private Map<String, User> map = new HashMap<String, User>();
我正在按照以下方式填充 map 键和对象。
List<User> users = session.createCriteria(User.class).list();
for(ApplicationUser user : users) {
map.put(user.getUserName(), user);
}
我正在尝试按如下方式检索数据,
List<Person> persons = session.createCriteria(Person.class).list();
for (Person p : persons) {
User user = map.containsKey(p.getUsername()) ? map.get(p.getUsername()) : new User();
//Email is always null.
System.out.println(user.getEmail());
}
有人可以帮助我指明正确的方向,了解如何从我的 map 中检索对象值。谢谢
最佳答案
首先,您应该将循环更改为:
for (Person p : persons) {
String username = p.getUsername();
User user = map.get(username);
if (user != null) {
System.out.println(user.getEmail());
} else {
System.out.println("User " + username + " is unknown");
}
}
然后在循环中设置一个断点并调试您的代码。到目前为止看起来是正确的。也许您只是没有在 User
中设置 email
或者来自 persons
的用户不在您的 map
中。
关于java - 使用映射键从 Java 映射中检索对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502157/