序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。在Java中实现链表的序列化,可以使用以下方法:
public class ListNode implements Serializable {
private int val;
private ListNode next;
public ListNode(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
}
import java.io.*;
public class SerializeLinkedList {
public static void main(String[] args) {
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
try {
FileOutputStream fileOut = new FileOutputStream("linkedList.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(head);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
}
}
import java.io.*;
public class DeserializeLinkedList {
public static void main(String[] args) {
ListNode head = null;
try {
FileInputStream fileIn = new FileInputStream("linkedList.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
head = (ListNode) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException c) {
System.out.println("ListNode class not found");
c.printStackTrace();
}
ListNode currentNode = head;
while (currentNode != null) {
System.out.println(currentNode.getVal());
currentNode = currentNode.getNext();
}
}
}
这个例子中,我们首先创建了一个链表节点类ListNode
,它实现了Serializable
接口,以便可以被序列化。然后,我们创建了一个链表实例,并将其序列化到文件linkedList.ser
中。最后,我们反序列化文件中的链表,并将其打印出来。
推荐的腾讯云相关产品:
产品介绍链接地址:
云+社区技术沙龙[第17期]
云+社区沙龙online [国产数据库]
高校公开课
腾讯云数智驱动中小企业转型升级系列活动
云+社区沙龙online
领取专属 10元无门槛券
手把手带您无忧上云