【发布时间】:2014-10-27 04:12:53
【问题描述】:
这可能是一个愚蠢的问题,但是如何在 java 中返回 Map.Entry 对?
给定一个类似的方法:
public Map.Value<K,V> next(){
return ???
}
如何构建和返回地图值?这是我正在为哈希映射实现的迭代器内部。获取我想要返回的值没有问题,但是 java 不允许我实例化 Map.Entry 对象,除非我实现所有抽象方法,即使那样它也不起作用。我是否需要为 Map.Entry 构建一个构造函数,它可以传递我要提取的 K、V 值?
非常感谢任何帮助/指导
更新
我正在尝试为自定义 HashMap 实现迭代器,并且需要实现 next() 方法 - 我的代码结构是:
@Override
public Iterator<Map.Entry<K, V>> iterator() {
return new Iterator<Map.Entry<K, V>>(){
public boolean hasNext(){
return false;
}
public Map.Entry<K,V> next(){
Map.Entry<K, V> retVal = new Map.Entry<K, V>() {
public Map.Entry<K, V>(K key, V val){
}
@Override
public K getKey() {
// TODO Auto-generated method stub
return null;
}
@Override
public V getValue() {
// TODO Auto-generated method stub
return null;
}
@Override
public V setValue(V value) {
// TODO Auto-generated method stub
return null;
}
};
}
return null;
}
public void remove(){
throw new UnsupportedOperationException();
}
};
}
}
我有抽象方法,但我不确定我应该如何实现它们。再次感谢您的帮助
【问题讨论】:
-
你自己说的,你必须实现 Map.Entry 接口的所有方法。没有您的代码,我们无能为力。
-
请详细说明您到底想做什么。
-
我正在尝试为多值哈希映射实现迭代器,但我想我的问题更笼统 - 如何从映射中返回键值对...或我是否以错误的方式实现迭代器?
-
您可能会发现查看HashMap implementation 很有用。 Map 类本身,假设是一个自定义实现,应该已经有某种形式的条目集,这个迭代器将要对其进行迭代。