“添加到HashMapList时,线程中的异常”main“java.lang.NullPointerException

时间:2009-08-03 05:08:53

标签: java collections

HashMapList将其元素保存在HashMap中)当我调用add方法时,此错误消息将显示在concole“线程中的异常”main“java.lang.NullPointerException

public class HashMapList<K, V extends Product> extends AbstractList<Product> {
public V element;

public int index;

Map<Integer, V> map;

public HashMapList() {
    super();
    new HashMap<Integer, V>();
 }

// Override
public void add(int index, V element) {
    map.put(new Integer(index), element);

 }
}  

谢谢,我已经解决了第一个问题,但是当我调用添加方法时,如==&gt;

HashMapList<Integer, Book> list = new HashMapList<Integer, Book>();
list.add(0, new Book("physics"));

和Book类是==&gt;

public class Book extends Product {
public String name = null;
public Book(String name) {
    super(name);

   }
 }

和产品类是==&gt;

public class Product implements Comparable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

private String name = null;

public Product(String name) {
    if (name == null)
        throw new NullPointerException();
    this.name = name;
  }

public String getName() {
    return name;
  }

// Override

public int compareTo(Object o) {
    Product product = (Product) o;
    int compare = getName().compareTo(product.name);
    return compare;
  }
 }

当我想基本上用System.out.println(list)打印这个列表时; 这句话将在concole中显示: [org.bihe.com1112.Book@1fb8ee3,org.bihe.com1112.Book@61de33,org.bihe.com1112.Book@14318bb]

3 个答案:

答案 0 :(得分:3)

您没有为地图分配任何内容

public HashMapList() {
    super();
    map = new HashMap<Integer, V>();
}

每当得到空指针异常时,查找为您正在使用的变量赋值的位置。在这里查找代码中您说“map = ...”的任何地方。

答案 1 :(得分:2)

看看你的构造函数。

new HashMap<Integer, V>();

应该是

map = new HashMap<Integer, V>();

答案 2 :(得分:2)

对于你的第二个问题,你应该真正开始另一个线程。它正确打印对象的字符串表示形式。您的Book课程未提供自定义覆盖的toString()方法。所以它使用从Object继承的那个,它只返回一个由类的全名和对象的hashCode组成的字符串,这就是你所看到的。如果你想看到不同的东西,你应该覆盖toString()方法。