有更快的“地图”吗?

时间:2012-01-22 16:22:20

标签: java gwt

我在下面有这个GWT代码有一些小问题:

设置了loginaboutme属性,或者只设置了contacts,它始终位于该行的第一位。这可能是在for循环完成之前设置了contacts属性,导致contacts被赋值为空吗?

public void copyFrom(User user) {
        Map<String,String> map = new HashMap<String,String>();
        for (Contact contact : user.getContacts()) {
            map.put(contact.getType(), contact.getValue());
        }
        super.set("lastlogin", user.getLastLogin());
        super.set("aboutme", user.getAboutMe());
        super.set("contacts", map);
    }

我是否需要使用“更快”Map

2 个答案:

答案 0 :(得分:3)

for循环和向Map添加值都不是异步操作,因此整个循环在调用super.set(...)之前执行。在这种情况下,map不能是null,因为您在声明时将其实例化。它可能最终没有填充(例如,如果user.getContacts()中没有元素),但不是空。

你的问题在于set(...)在这种情况下super的实施。

答案 1 :(得分:1)

如果您在地图上呼叫get,则返回不存在的密钥null,这是真的。您的代码是按顺序执行的,因此您可以确保在访问map时完成for循环。