java - 使用java实现HashMap

标签 java hashmap

我得到了这个代码:

public class MatriceMap extends AbstractMatrix {

HashMap<Position,Integer> valeurs;
public MatriceMap(int nbl, int nbc) {
    super(nbl, nbc);
    values = new HashMap<Position, Integer>();
}
@Override
public int getValue(int x, int y) {
    Position p=new Position(x,y);
    int m=valeurs.get(p);
    return m;
}

我的 getValue 方法出现错误:java.lang.NullPointerException

最佳答案

如果 valuers.get(p) 返回 null,

int m=valeurs.get(p); 将抛出 NullPointerException ,由于尝试将 null 值自动拆箱为原始 int

如果您的方法返回一个Integer,那么它也可以返回一个null:

public Integer getValeur(int x, int y) {
    Position p=new Position(x,y);
    Integer m=valeurs.get(p);
    return m;
}

编辑:

在看到您无法更改 getValeur 的返回类型的评论后,您唯一的选择(除了返回表示 null 的默认值之外)是抛出未经检查的异常(或检查的异常)异常(如果您要重写的方法已经抛出该异常或该异常的父类(super class))如果 valuers.get(p) 返回 null :

public int getValeur(int x, int y) {
    Position p=new Position(x,y);
    Integer m=valeurs.get(p);
    if (m == null) {
        throw new IllegalArgumentException ("Invalid position " + x + "," + y);
    }
    return m;
}

关于java - 使用java实现HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535439/

相关文章:

java - Java HashMap 中的 Varargs

java - JAVA中如何通知一个类中的所有线程?

java - 使用 Selenium Java 从 HTML 中获取字符串文本

java - 在 Java 中将大文件标记为哈希表

java - 如何创建一万个对象并将它们存储在 HashMap 中

java - hashmap 1.4 和 1.6 之间的区别

java - 在Map线性或常量上调用values().size()

java - Appium:ClassNotFoundException:org.openqa.selenium.remote.internal.ApacheHttpClient$Factory

java - RESTFul Web 服务 POST 示例

java - 配置Web应用程序的上下文路径