1

我有一个包含链接列表数据结构的程序来存储自定义 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 次。

4

1 回答 1

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++;
} 
于 2013-02-15T11:55:46.143 回答