我需要创建一个实现map接口的vector类,但是在put方法中它返回nullexception,我需要帮助实现put方法,我在internet上找不到这种类型的内容
public class Vetor_map implements Map<Key, Student> {
private int nElements;
private Map<Key, Student> mapa[];
public Vetor_map(int max) {
mapa = new Map[max];
nElements = 0;
}
// PUT
@Override
public Estudante put(Key key, Estudants value) {
if (!isFull()) {
mapa[nElements].put(key, value);
nElements++;
return value;
}
return value;
}
public boolean isEmpty() {
// TODO Auto-generated method stub
if (nElements == 0)
return true;
return false;
}
public boolean isFull() {
if (nElements == mapa.length) {
return true;
}
return false;
}
主类:
public static void main(String[] args) {
// TODO Auto-generated method stub
Key ch = new Key();
Student es = new Student();
Vetor_map vm = new Vetor_map(10);
System.out.println("Key: " + ch + ", Estudant: "+ es);
vm.put(ch, es);
错误
1条答案
按热度按时间kkbh8khc1#
Map是条目的集合,其中每个条目都是一个键值对。所以你的
Vetor_map
类应该实现java.util.Map
–确实如此–但我认为您还应该创建一个实现接口的类Map.Entry
.在下面的代码中,我添加了一个内部类
VectorMapEntry
实现Map.Entry
因此,阶级VectorMap
–实现接口Map
–包含一组VectorMapEntry
示例。从这里开始,实现两个接口的方法就很简单了,即Map
以及Map.Entry
.请注意以下代码。
我把名字改成
Vetor_map
至VectorMap
.我添加了一些方法
toString()
以及main()
上课VectorMap
仅用于测试目的。我还添加了方法toString()
到班级Key
以及Student
也用于测试目的。您没有为类提供代码
Key
以及Student
所以我为这两个类添加了 backbone 定义。请注意,每个类-Key
以及Student
–每个实现方法必须相等。我只添加了方法hashcode,因为方法的javadocequals()
建议这样做。VectorMap
不能包含nullKey
但它可以包含nullStudent
作为给定值Key
.每个
Key
在VectorMap
是独一无二的。调用方法时put()
用一个Key
已经存在于VectorMap
,则替换现有值。还请注意,可以更改上述代码,以便
VectorMap
可以(理论上)包含无限多个键值对。这可以通过简单地扩大entries
当数组被完全填满时。