Java 有没有更快的;地图;?
下面我有一个GWT代码,它有一些小问题: 设置了Java 有没有更快的;地图;?,java,gwt,Java,Gwt,下面我有一个GWT代码,它有一些小问题: 设置了login和aboutme属性,或者只设置了contacts,这是行中的第一个属性。这可能是因为在for循环完成之前设置了contacts属性,导致contacts被分配为空值吗 public void copyFrom(User user) { Map<String,String> map = new HashMap<String,String>(); for (Contact contac
login
和aboutme
属性,或者只设置了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);
}
public void copyFrom(用户){
Map Map=newhashmap();
对于(联系人:user.getContacts()){
put(contact.getType(),contact.getValue());
}
set(“lastlogin”,user.getLastLogin());
set(“aboutme”,user.getAboutMe());
super.set(“联系人”,地图);
}
我是否需要使用“更快的”
Map
?如果您在Map上调用get
,则返回一个不存在的键null
,这是正确的。您的代码是按顺序执行的,因此您可以确保在访问映射时for循环已完成 如果您在映射上调用get
,以获取不存在的密钥,则返回null
,这是正确的。您的代码是按顺序执行的,因此您可以确保在访问映射时for循环已完成 for循环和向映射添加值都不是异步操作,因此整个循环在调用super.set(…)
之前执行。在本例中,map
不能为null
,因为您在声明时实例化了它。它可能最终不被填充(例如,如果user.getContacts()
中没有元素),但不能为null
您的问题在于通过本例中的super
实现set(…)
。for循环和向Map
添加值都不是异步操作,因此整个循环在调用super.set(…)
之前执行。在本例中,map
不能为null
,因为您在声明时实例化了它。它可能最终不被填充(例如,如果user.getContacts()
中没有元素),但不能为null
您的问题在于通过本例中的super
实现set(…)
。实际上这是一个简单的java问题,与GWT无关。在本例中super
是什么?也许问题就在那里。您正在循环浏览联系人列表,将其放入地图中,然后使用填充的地图设置属性。没有理由表现得奇怪。地图不是问题。事实上,这是一个GWT问题,因为GWT被编译成javascript——问题的一部分,OP想知道是否有一个编译成javascript时运行更快的实现。实际上,这是一个简单的java问题,与GWT无关。在这种情况下,super
是什么?也许问题就在那里。您正在循环浏览联系人列表,将其放入地图中,然后使用填充的地图设置属性。没有理由表现得奇怪。映射不是问题所在。实际上,这是一个GWT问题,因为GWT被编译成javascript——问题的一部分是,OP想知道是否有一个实现在编译成javascript时运行得更快。我如何知道循环何时完成?你的意思是我需要挂上国旗吗?我用GWT标记了它,因为我不确定问题是否出在实际代码被编译成javascript这一事实上。我如何知道循环何时完成?你的意思是我需要挂上国旗吗?我用GWT标记了它,因为我不确定问题是否出在实际代码被编译成javascript的事实上。