我正在看這個API ArrayListMultiMap
,它實現了Serializable
接口。這是否意味着我可以序列化這個對象?所有的Multimap對象都被序列化了嗎?番石榴 - 一個Multimap可以序列化?
4
A
回答
7
Serializable
的含義總是相同的:如果對象不可序列化,則不能序列化。如果是,它可能工作與否......特別是在集合(包括地圖和multimaps)的情況下,這取決於他們的內容。
作爲一個例子,你可以肯定地序列化ArrayList<String>
,因爲ArrayList.class
是可序列化的,列表的每個成員也是如此。試圖序列化ArrayList<Object>
的OTOH可能工作也可能不工作:如果所有包含的對象都是例如字符串,它會工作。如果任何成員不是可序列化的,你將會得到一個異常。
這是否意味着我可以序列化這個對象?
如果所有鍵和值都是可序列化的,那麼可以。
是否所有multiMap對象都可序列化?
不,接口Multimap
沒有擴展Serializable
,所以可能會有不可序列化的實現。事實上,你可以通過例如Multimaps.filterEntries
。
0
ArrayListMultimap
和HashMultimap
是Serializable
但Collection
次(在asMap()
例如)不是。
這個問題回答here:
要使用由asMap()
返回的地圖,你可以重新創建一個新的地圖和包裹Multimap之Collection
意見納入其他收藏品(例如Set
),這將使新地圖Serializable
:
Multimap<MyClass, MyOtherClass> myMultiMap = HashMultimap.create();
// ... build your multimap
Map<MyClass, Set<MyOtherClass>> map = myMultiMap.asMap().entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
(entry) -> ImmutableSet.copyOf(entry.getValue())
));
或Java 7兼容的代碼:
Multimap<MyClass, MyOtherClass> myMultiMap = HashMultimap.create();
// ... build your multimap
Map<MyClass, Set<MyOtherClass>> map = Maps.newHashMap();
for (Map.Entry<MyClass, Collection<MyOtherClass>> entry :
myMultiMap.asMap().entrySet()) {
map.put(entry.getKey(), ImmutableSet.copyOf(entry.getValue()));
}
相關問題
- 1. 番石榴Multimap列表
- 2. 番石榴Multimap containsEntry問題
- 3. 如何排序番石榴multimap? (KEY = DATE)
- 4. JSON:序列化番石榴可選
- 5. 無法從番石榴Multimap之
- 6. 迭代通過Multimap(番石榴)
- 7. Spring MVC的映射番石榴Multimap之
- 8. 番石榴映射
- 9. 番石榴SetMultimap不可序列化(由於不可序列化WrappedSet)
- 10. 番石榴14.0 GWT串行化可選
- 11. Floats.tryParse()番石榴
- 12. 按值的數量排序番石榴Multimap
- 13. 番石榴與傑克遜的可選序列化
- 14. 番石榴進口問題
- 15. 番石榴散列用例
- 16. 谷歌番石榴散列
- 17. 番石榴表ConcurrentModificationException
- 18. 番石榴入門
- 19. 排序番石榴BiMap
- 20. Java排序番石榴TreeBasedTable
- 21. 番石榴和Weblogic:ClassNotFoundException
- 22. 番石榴和javafx
- 23. ClassNotFoundException的番石榴
- 24. 番石榴功能
- 25. 番石榴資源
- 26. 番石榴:合併兩個多圖
- 27. Java番石榴CartesianProduct
- 28. 番石榴 - 地圖支持番石榴功能
- 29. 使用隨機訪問文件的番石榴multimap?
- 30. 番石榴Multimap。把價值兩至年底,並開始
我阿格雷e與maartinus。因爲我使用ArralyListMultiMap(它實現了Serializable),在我的情況下鍵和值是字符串,我應該能夠序列化。 – Princesh