阅读量:0
在Java中,HashMap和HashSet都是实现了Serializable接口的类,因此它们都可以被序列化。序列化是将对象转换为字节流的过程,以便将其保存到文件中或通过网络进行传输。
要序列化HashMap或HashSet,只需要将它们写入ObjectOutputStream中,如下所示:
import java.io.*; import java.util.HashMap; import java.util.HashSet; public class SerializationExample { public static void main(String[] args) { try { // Serialize a HashMap HashMap<String, Integer> map = new HashMap<>(); map.put("a", 1); map.put("b", 2); ObjectOutputStream mapOut = new ObjectOutputStream(new FileOutputStream("map.ser")); mapOut.writeObject(map); mapOut.close(); // Serialize a HashSet HashSet<String> set = new HashSet<>(); set.add("apple"); set.add("banana"); ObjectOutputStream setOut = new ObjectOutputStream(new FileOutputStream("set.ser")); setOut.writeObject(set); setOut.close(); } catch (IOException e) { e.printStackTrace(); } } }
要反序列化HashMap或HashSet,只需要从ObjectInputStream中读取对象,如下所示:
import java.io.*; import java.util.HashMap; import java.util.HashSet; public class DeserializationExample { public static void main(String[] args) { try { // Deserialize a HashMap ObjectInputStream mapIn = new ObjectInputStream(new FileInputStream("map.ser")); HashMap<String, Integer> map = (HashMap<String, Integer>) mapIn.readObject(); mapIn.close(); System.out.println(map); // Deserialize a HashSet ObjectInputStream setIn = new ObjectInputStream(new FileInputStream("set.ser")); HashSet<String> set = (HashSet<String>) setIn.readObject(); setIn.close(); System.out.println(set); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
需要注意的是,当对HashMap或HashSet进行序列化和反序列化时,它们所包含的所有对象也必须实现Serializable接口,否则会抛出NotSerializableException异常。