我有一个包含链接列表数据结构的程序来存储自定义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次。
答案 0 :(得分:1)
while(counter < 10){
packet = new PacketType(); //change here and try once.
packet = con.fillWIMPacket(packet);
packetQueue.add(packet);
System.out.println("Packet " + counter + " added to Queue");
System.out.println("Packet " + counter + " " + packet.toString());
counter++;
}