我有一个包含链接列表数据结构的程序来存储自定义 TCP 数据包。
测试程序读入一个数据包,将其添加到链表队列中,并立即打印数据包值(时间戳值)以供确认。这个过程在一个while循环中重复10次,所以Linked List队列中有10个包。
问题在于在读入所有数据包后检查队列值。问题是只显示最后一个读入的数据包的值,尽管知道有 9 个其他数据包具有不同的值(假设)在队列。
如果有人能帮助我理解这个看似黑魔法,我将不胜感激。
public void readPackets() throws IOException {
int counter = 1;
while(counter < 10){
packet = con.fillWIMPacket(packet);
packetQueue.add(packet);
System.out.println("Packet " + counter + " added to Queue");
System.out.println("Packet " + counter + " " + packet.toString());
counter++;
}
}
public void printPacketValues(){
System.out.println("Packet Queue size is " + packetQueue.size());
for(int i = 0; i < packetQueue.size(); i++){
System.out.println("Packet " + i + ": " + packetQueue.get(i));
}
}
我应该澄清第一个 readPackets() 的 println() 方法以正确的顺序显示数据。但是,printPacketValues() 的 println() 只是将最后一个数据包的值显示了 10 次。