这可能是个愚蠢的问题,但我如何在 java 中返回 Map.Entry 对?
给定一个方法:
public Map.Value<K,V> next(){
return ???
}
如何构建和返回 map 值?这是我正在为 HashMap 实现的迭代器的内部。我可以毫无问题地获取我想要返回的值,但是 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 值并且想在不实现 Map.Entry 类和方法的情况下这样做,您可以通过返回一个 AbstractMap.SimpleEntry 来实现。
我设置了一些虚拟代码来显示:
import java.util.HashMap;
import java.util.Map;
public class MapReturn<K,V> extends HashMap<K,V>{
public static void main (String [] args){
}
public Map.Entry<K,V> returnMapValue(K k, V v){
return new java.util.AbstractMap.SimpleEntry<K,V>(k,v);
}
}
这显然没有做任何事情,但它将返回值注册为有效,这是原始问题
关于java - 在 Java 中返回 Map.Entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26581085/