TreeSet và Serializable
TreeSet implements Serializable, nên có thể ghi trực tiếp ra file bằng ObjectOutputStream.writeObject(). Cần đảm bảo các phần tử trong set cũng Serializable.
Ví dụ
import java.util.*;
import java.io.*;
public class TreeSetToFileExample {
public static void main(String[] args) {
try {
String[] elements = {"Raja", "Jai", "Adithya", "Chaitanya"};
// TreeSet tự động sắp xếp theo thứ tự tự nhiên (alphabet)
Set<String> treeSet = new TreeSet<>(Arrays.asList(elements));
try (FileOutputStream fos = new FileOutputStream("set.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(treeSet);
System.out.println("Các phần tử TreeSet đã lưu vào file thành công");
}
} catch (Exception e) {
System.out.println("Lỗi: " + e.getMessage());
}
}
}
Kết quả
Các phần tử TreeSet đã lưu vào file thành công
Đọc lại (deserialize)
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("set.txt"))) {
Set<String> restored = (Set<String>) ois.readObject();
System.out.println("Đọc lại: " + restored); // [Adithya, Chaitanya, Jai, Raja] (sorted)
}
Lưu ý: TreeSet dùng Comparable hoặc Comparator để sắp xếp. Khi deserialize, thứ tự được khôi phục nhờ TreeSet nội bộ xây dựng lại cây.