Java 访问地图';s键-值对作为对象

Java 访问地图';s键-值对作为对象,java,serialization,hashmap,Java,Serialization,Hashmap,给定一个键和值都可序列化的Java映射,我希望能够序列化键-值对。有没有什么有效的方法可以在给定键的情况下,将键值对作为对象检索并序列化?我已经看到了map类的entrySet()方法,但我不想搜索两次该对。您可以将其序列化为数组: Object obj = new Object[] {key, value} 只要键和值可序列化,obj就可以序列化。map不提供这种方法。但是您仍然可以做的是,通过扩展Map实现作为示例-HashMap,并实现如下方法- Map<K,V> map =

给定一个键和值都可序列化的Java映射,我希望能够序列化键-值对。有没有什么有效的方法可以在给定键的情况下,将键值对作为对象检索并序列化?我已经看到了map类的entrySet()方法,但我不想搜索两次该对。

您可以将其序列化为数组:

Object obj = new Object[] {key, value}

只要键和值可序列化,obj就可以序列化。

map不提供这种方法。但是您仍然可以做的是,通过扩展Map实现作为示例-
HashMap
,并实现如下方法-

Map<K,V> map = new HashMap<K,V>(){
public Entry<K,V> get(Object key) { // overloading get method in subclass
     if (key == null)
         return getForNullKey();
     int hash = hash(key.hashCode());
     for (Entry<K,V> e = table[indexFor(hash, table.length)];
          e != null;
          e = e.next) {
         Object k;
         if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
             return e;
     }
     return null;
 }


 private Entry<K,V> getForNullKey() { 
     for (Entry<K,V> e = table[0]; e != null; e = e.next) {
         if (e.key == null)
             return e;
     }
     return null;
 }};
 ...
 Map.Entry<K,V> entry1 = map.get(key);// invoking Entry<K,V> get(Object key) 
Map Map=newhashmap(){
公共条目get(对象键){//重载子类中的get方法
if(key==null)
返回getForNullKey();
int hash=hash(key.hashCode());
for(条目e=表[indexFor(hash,table.length)];
e!=null;
e=e.next){
对象k;
如果(e.hash==hash&((k=e.key)==key | | key.equals(k)))
返回e;
}
返回null;
}
私有项getForNullKey(){
for(条目e=表[0];e!=null;e=e.next){
如果(e.key==null)
返回e;
}
返回null;
}};
...
Map.Entry entry1=Map.get(key);//调用条目get(对象键)