Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换番石榴';s ArrayListMultimap到可序列化映射_Java_Serialization_Guava - Fatal编程技术网

Java 转换番石榴';s ArrayListMultimap到可序列化映射

Java 转换番石榴';s ArrayListMultimap到可序列化映射,java,serialization,guava,Java,Serialization,Guava,是否可以在可序列化的映射中转换ArrayListMultimap?当然,键和值是可序列化的 我知道ArrayListMultimap是可序列化的,但我想将其序列化为普通的Map,因为我不想让反序列化程序知道guava multimap 我试过这个: ArrayListMultimap<String, Integer> mmap = ArrayListMultimap.create(); mmap.put("key",1); mmap.put("key",222

是否可以在
可序列化的
映射中转换
ArrayListMultimap
?当然,键和值是可序列化的

我知道
ArrayListMultimap
是可序列化的,但我想将其序列化为普通的
Map
,因为我不想让反序列化程序知道guava multimap

我试过这个:

    ArrayListMultimap<String, Integer> mmap = ArrayListMultimap.create();
    mmap.put("key",1);
    mmap.put("key",222222222);

    ObjectOutput out = new ObjectOutputStream(new ByteArrayOutputStream());
    //This works fine
    out.writeObject(mmap);
    Map<String, List<Integer>> map = Multimaps.asMap(mmap);
    try {
        out.writeObject(map);
    } catch (NotSerializableException e){
        //Multimaps.asMap is not Serializable, seems reasonable to me
    }

    ImmutableMap<String, List<Integer>> imap = ImmutableMap.copyOf(map);
    //Will throw java.io.NotSerializableException: com.google.common.collect.AbstractMapBasedMultimap$RandomAccessWrappedList. Oh man!! why!??
    out.writeObject(imap);
ArrayListMultimap mmap=ArrayListMultimap.create();
mmap.put(“键”,1);
mmap.put(“键”,22222);
ObjectOutput out=new ObjectOutputStream(new ByteArrayOutputStream());
//这个很好用
out.writeObject(mmap);
Map Map=Multimaps.asMap(mmap);
试一试{
out.writeObject(映射);
}捕获(NotSerializableException){
//Multimaps.asMap不可序列化,对我来说似乎合理
}
ImmutableMap imap=ImmutableMap.copyOf(map);
//将抛出java.io.NotSerializableException:com.google.common.collect.AbstractMapBasedMultimap$RandomAccessWrappedList。哦,天哪!!为什么?
out.writeObject(imap);
那么,有没有一种方法(希望是一种有效的方法)来转换可序列化映射中的
ArrayListMultimap
,这就是:其中包含可序列化列表的映射


我使用的是guava-18.0

您可以使用以下方法将地图值转换为可序列化的列表:

imap = ImmutableMap.copyOf(Maps.transformValues(map, ImmutableList::copyOf));