在Java中,要对Set进行序列化,您需要执行以下步骤:
import java.io.*;
import java.util.*;
Serializable
接口的类,该类将包含您要序列化的Set。例如,我们创建一个名为MySet
的类,其中包含一个String
类型的Set。public class MySet implements Serializable {
private Set<String> mySet;
public MySet() {
mySet = new HashSet<>();
}
public void add(String item) {
mySet.add(item);
}
public Set<String> getMySet() {
return mySet;
}
}
请注意,Serializable
接口是一个标记接口,没有任何方法需要实现。实现此接口的目的是告诉Java虚拟机(JVM)这个类的对象可以被序列化。
MySet
对象,向其添加一些元素,然后将其序列化到一个文件中。public class Main {
public static void main(String[] args) {
MySet mySet = new MySet();
mySet.add("apple");
mySet.add("banana");
mySet.add("orange");
try {
FileOutputStream fileOut = new FileOutputStream("mySet.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(mySet);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in mySet.ser");
} catch (IOException i) {
i.printStackTrace();
}
}
}
这将把mySet
对象序列化到一个名为mySet.ser
的文件中。
public class DeserializeSet {
public static void main(String[] args) {
MySet deserializedSet = null;
try {
FileInputStream fileIn = new FileInputStream("mySet.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
deserializedSet = (MySet) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
System.out.println("MySet class not found");
c.printStackTrace();
return;
}
System.out.println("Deserialized Set:");
for (String item : deserializedSet.getMySet()) {
System.out.println(item);
}
}
}
这将从mySet.ser
文件中反序列化Set,并将其内容打印到控制台。