java - 使用映射键从 Java 映射中检索对象值

标签 java

我正在尝试通过构建包含用户名作为键和用户对象作为值的映射来同步到用户列表。构建 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/

相关文章:

java - 如何从属性或 xml 文件填充 SOAP 请求参数?

java - 使用 JPA 1.0 来替代 @ElementCollection 来持久化 Map<String,String>?

java - 在 Java 上运行 JTape 库(java 库路径)

java - 生成线条比 1 像素细的 PDF

java - Jersey Rest API立即返回,长任务继续

java - 序列化变量的虚拟值

java - 按对象的属性对 map 进行排序

java - 了解 Java IO

java - 需要一个字符串,但在第 1 行第 29 列路径处为 BEGIN_OBJECT

java - 在并发 HashMap 中重新散列期间检索