Java 为什么并发HashMap是可序列化的

Java 为什么并发HashMap是可序列化的,java,serialization,concurrency,concurrenthashmap,Java,Serialization,Concurrency,Concurrenthashmap,我浏览了并发hashmap的源代码,发现它是可序列化的。HashMap也是可序列化的 为什么并发hashmap/hashmap是可序列化的?我的意思是为什么选择这个设计。HashMap是可序列化的,类实现了serializable接口 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static

我浏览了并发hashmap的源代码,发现它是可序列化的。HashMap也是可序列化的


为什么并发hashmap/hashmap是可序列化的?我的意思是为什么选择这个设计。

HashMap是可序列化的,类实现了
serializable
接口

public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {

private static final long serialVersionUID = 362498820763181265L;
公共类HashMap扩展了AbstractMap
实现映射、可克隆、可序列化{
私有静态最终长serialVersionUID=362498820763181265L;
ConcurrentHashMap也是如此:

public class ConcurrentHashMap<K,V> extends AbstractMap<K,V>
implements ConcurrentMap<K,V>, Serializable {
private static final long serialVersionUID = 7249069246763182397L;
公共类ConcurrentHashMap扩展了AbstractMap
实现ConcurrentMap,可序列化{
私有静态最终长serialVersionUID=7249069246363182397L;
您可以在下面的链接中获得有关java序列化的更多详细信息


HashMap是可序列化的,类实现了
可序列化的
接口

public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {

private static final long serialVersionUID = 362498820763181265L;
公共类HashMap扩展了AbstractMap
实现映射、可克隆、可序列化{
私有静态最终长serialVersionUID=362498820763181265L;
ConcurrentHashMap也是如此:

public class ConcurrentHashMap<K,V> extends AbstractMap<K,V>
implements ConcurrentMap<K,V>, Serializable {
private static final long serialVersionUID = 7249069246763182397L;
公共类ConcurrentHashMap扩展了AbstractMap
实现ConcurrentMap,可序列化{
私有静态最终长serialVersionUID=7249069246363182397L;
您可以在下面的链接中获得有关java序列化的更多详细信息


正如其他人已经说过的,
HashMap
是可序列化的,但是Map或
集合
接口并不强制每个集合的实现都是“可序列化的”。如果您想创建自己的
Set
Map
,但不将其设置为可序列化,则这是您的选择,强制人们这样做是没有意义的


但我的猜测是,大多数实用程序类,如
Collection
实现,都是可序列化的,所以每个人都不必创建自己的
SerializableHashMap
,因为这些类被大量使用,而且很多人都在序列化它们。所以这是它们的一个基本特性。

正如其他人已经说过的,
HashMap
Serializable
,但是Map或
Collection
接口并不强制每个集合的实现都是“Serializable”。如果您想创建自己的
Set
Map
而不将其设置为Serializable,这是您的选择,强制人们这样做没有意义


但我的猜测是,大多数实用程序类,如
Collection
实现,都是可序列化的,因此每个人都不必创建自己的
serializablehasmap
,因为这些类被大量使用,而且很多人对它们进行序列化。所以这是它们的一个基本特性。

因为它实现了“serializable”接口。在这里您可以得到一些有趣的东西Java
HashMap
类是可序列化的,因为它实现了“可序列化”接口。在这里你可以得到一些有趣的东西Java
HashMap
类是可序列化的,q.v.。我想OP想知道它为什么实现可序列化接口,为什么选择这种设计。我们可能无法为你的查询找到满意的答案。但我没有看到HashMap和ConcurrentHashMap之间有多大区别除了$WriteThroughEntry之外,erializaiton进程。以下是一些有趣的事实:是的,我想知道它为什么实现可序列化接口。我想OP想知道它为什么实现可序列化接口,为什么选择这种设计。我们可能无法为您的查询找到满意的答案。但我没有看到HashMap和ConcurrentHashMap序列化进程,除了$WriteThroughEntry。以下是一些有趣的事实:是的,我想知道为什么它实现可序列化接口。