hashmap与treemap

jchrr9hc  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(328)

如果我使用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<>();

    @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() {

    }

}

我不工作的意思是,当我在一个主方法中使用它时,我得到:

Exception in thread "main" java.lang.NullPointerException at
 java.util.TreeMap.compare(Unknown Source) at java.util.TreeMap.put(Unknown Source) 
at ka.fil.ModelInMemory.putRecord(ModelInMemory.java:11)
 at ka.fil.AppBatch.main(AppBatch.java:10)
xkftehaa

xkftehaa1#

一个区别是treemaps不支持空键,但是hashmaps支持。
使用treemap,如果 beanRecord.getEmail() 返回null。

ux6nzvsh

ux6nzvsh2#

如果你只是更换线路-

private Map<String,BeanRecord> map = new HashMap<>();

与-

private Map<String,BeanRecord> map = new TreeMap<>();

那就没用了,因为你有

import java.util.HashMap;

不包括树状图。简单的解决方法就是

import java.util.*;

相关问题