Java-链表存储困难

Java-链表存储困难,java,indexing,linked-list,queue,Java,Indexing,Linked List,Queue,我有一个包含链表数据结构的程序来存储自定义TCP数据包 测试程序读入数据包,将其添加到链表队列,并立即打印数据包值(时间戳值)以进行确认。这个过程在while循环中重复10次,因此链表队列中有10个数据包 问题是在读取所有数据包后检查队列值。问题在于,尽管知道队列中有9个其他具有不同值(假定)的数据包,但只显示最后读入的数据包的值 如果有人能帮助我理解这个看似黑色的魔法,我将非常感激 public void readPackets() throws IOException { int c

我有一个包含链表数据结构的程序来存储自定义TCP数据包

测试程序读入数据包,将其添加到链表队列,并立即打印数据包值(时间戳值)以进行确认。这个过程在while循环中重复10次,因此链表队列中有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));
    }

}
public void readPackets()引发IOException{
int计数器=1;
while(计数器<10){
数据包=连续数据包(数据包);
packetQueue.add(packet);
System.out.println(“数据包”+计数器+“添加到队列”);
System.out.println(“Packet”+计数器+“”+Packet.toString());
计数器++;
} 
}
public void printPacketValues(){
System.out.println(“数据包队列大小为”+packetQueue.size());
对于(int i=0;i
我应该澄清,第一个readPackets()的println()方法以正确的顺序显示数据。但是,printPacketValues()的println()只显示最后一个数据包的值10次。

while(计数器<10){
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++;
} 
packet=new PacketType();//在此处更改并重试一次。 数据包=连续数据包(数据包); packetQueue.add(packet); System.out.println(“数据包”+计数器+“添加到队列”); System.out.println(“Packet”+计数器+“”+Packet.toString()); 计数器++; }
同时(计数器<10){
packet=new PacketType();//在此处更改并重试一次。
数据包=连续数据包(数据包);
packetQueue.add(packet);
System.out.println(“数据包”+计数器+“添加到队列”);
System.out.println(“Packet”+计数器+“”+Packet.toString());
计数器++;
} 

您可以发布任何跟踪和/或调用方法吗?是否有任何
IOException
被抛出?将
fillWIMPacket
的实现添加到代码中。看起来您可能正在返回作为参数传递的同一实例,在这种情况下,您的队列中包含10个相同的对象。为什么不使用for循环而不是while?是否可以发布任何跟踪和/或调用方法?是否有任何
IOException
被抛出?将
fillWIMPacket
的实现添加到代码中。看起来您可能正在返回作为参数传递的同一实例,在这种情况下,队列中包含10个相同的对象。为什么不使用for循环而不是while?太好了。为什么要为旧的实例创建一个新实例来进行处理。是否应覆盖旧引用?@Jnanathan否。您的linkedlist将包含对同一实例的引用列表,如果您不创建新实例,修改该实例将影响该linkedlist中的每个条目。完美。为什么要为旧的实例创建一个新实例来进行处理。是否应覆盖旧引用?@Jnanathan否。您的linkedlist将包含对同一实例的引用列表,如果不创建新实例,修改该实例将影响该linkedlist中的每个条目。