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]
答案 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()
方法。