Java HashMap与Treemap
如果我使用HashMap,我有一个代码可以工作,但是如果我使用TreeMap,它就不能工作, 谁能告诉我这是为什么 这是我的代码:Java HashMap与Treemap,java,hashmap,treemap,Java,Hashmap,Treemap,如果我使用HashMap,我有一个代码可以工作,但是如果我使用TreeMap,它就不能工作, 谁能告诉我这是为什么 这是我的代码: package ka.fil; import java.util.HashMap; import java.util.Map; public class ModelInMemory implements Model { private Map<String,BeanRecord> map = new HashMap<>();
package ka.fil;
import java.util.HashMap;
import java.util.Map;
public class ModelInMemory implements Model {
private Map<String,BeanRecord> map = new HashMap<>();
@Override
public void putRecord(BeanRecord beanRecord) {
map.put(beanRecord.getEmail(), beanRecord);
}
@Override
public BeanRecord getRecord(String email) {
BeanRecord r = map.get(email);
return r;
}
@Override
public Iterable<BeanRecord> allRecord() {
return map.values();
}
public ModelInMemory() {
}
}
如果您只是更换线路-
private Map<String,BeanRecord> map = new HashMap<>();
其中不包括树形图。解决这个问题的简单方法是
import java.util.*;
一个区别是树映射不支持空键,但哈希映射支持空键
对于树映射,如果
beanRecord.getEmail()
返回null,则在运行时会出现异常 你能定义不工作吗?你能发布你收到的错误消息吗?按字典顺序排序,也就是说。@ZiyaoWei:当我在main方法中使用它时,我得到以下信息:线程“main”java.lang.NullPointerException中的异常位于java.util.TreeMap.compare(未知源代码)中的java.util.TreeMap.put(未知源代码)中的异常位于ka.fil.ModelInMemory.putRecord中(ModelInMemory.java:11)在ka.fil.AppBatch.main(AppBatch.java:10)
如果您想了解更多关于TreeMap的信息,请阅读我的教程+1,eagle eye!但是通配符导入有点“太多”imhoFor java.util我通常会放一个通配符,因为它非常有用,而且我经常使用它。否则,如果我从一个包中导入3个或更多,我只会放一个通配符。+1但我们不确定他的问题是这个,因为我们没有错误消息。@Kafil10那么你能编辑你的帖子并添加你得到的错误消息吗还有什么需要处理的吗?@Kafil10所以在getEmail()之后放一个if(r==null)system.out.println(“这就是答案”);如果触发了,那么你就会知道。你说得对,我不知道TreeMap不支持null键,因为我对java非常陌生。谢谢
private Map<String,BeanRecord> map = new TreeMap<>();
import java.util.HashMap;
import java.util.*;