Java - 链接列表存储难度

时间:2013-02-15 11:50:28

标签: java indexing linked-list queue

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

1 个答案:

答案 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++;
}