在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,并將其內容打印到控制臺。