使用队列的Java语法

使用队列的Java语法,java,Java,我正在编写一个JAVA程序,它包含两个类。这两个类都有两个函数,一个函数将在队列中存储映射值,另一个函数将从队列中检索值。我一个接一个地调用这两个函数 插入工作正常,但从队列中删除时出现问题。我使用了Queue.poll两种方法;和队列。移除;它给出了最后一个插入的元素。下面是我的示例代码,请提出建议 class One { void functionOne(){ Map<int,String> map = new LinkedHashMap<int,String&

我正在编写一个JAVA程序,它包含两个类。这两个类都有两个函数,一个函数将在队列中存储映射值,另一个函数将从队列中检索值。我一个接一个地调用这两个函数

插入工作正常,但从队列中删除时出现问题。我使用了Queue.poll两种方法;和队列。移除;它给出了最后一个插入的元素。下面是我的示例代码,请提出建议

class One {
   void functionOne(){
   Map<int,String> map = new LinkedHashMap<int,String>();
   Two obj2 = new Two(); 
   for(int i=0;i<10;i++) {
     map.put(i,"one");
     obj2.pushData(map)
   }
}
class Two {
   Queue queue = new LinkedList();
   void pushData(Map<int,String> map) {
      queue.add(map);
   }
   void functionTwo() {
             System.out.println("Data:"+queue.size());
       while(queue.size()>0) {
         System.out.println("Data:"+queue.poll());
 // Here I have also used queue.remove();
       }
   }
}
class Three {
   public static void main() {
   One one = new One();
   Two two = new Two();
one.functionOne();
two.functionTwo();

   }
}

看看这段代码

Map<int,String> map = new LinkedHashMap<int,String>();
Two obj2 = new Two(); 
for(int i=0;i<10;i++) {
  map.put(i,"one");
  obj2.pushData(map)
}
尝试使用更像

for(int i=0;i<10;i++) {
  Map<int,String> map = new LinkedHashMap<int,String>();
  map.put(i,"one");
  obj2.pushData(map)
}
另外,确保调用pushData的两个实例与调用functionTwo的实例相同

这一切都是基于试图修复代码使其看起来像

import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;

public class Test {

    public static void main(String[] args) {
        One one = new One();
        Two two = new Two();
        one.functionOne(two);
        two.functionTwo();

    }

    static class One {

        public void functionOne(Two obj2) {
                Map<Integer, String> map = new LinkedHashMap<Integer, String>();
            for (int i = 0; i < 10; i++) {
                map.put(i, "one");
                obj2.pushData(map);
            }
        }

    }

    static class Two {

        Queue queue = new LinkedList();

        public void pushData(Map<Integer, String> map) {
            queue.add(map);
        }

        public void functionTwo() {
            System.out.println("Data:" + queue.size());
            while (queue.size() > 0) {
                System.out.println("Data:" + queue.poll());
                // Here I have also used queue.remove();
            }
        }
    }

}

考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应。您可以发布您的实际代码吗?只要看到上面的代码,很明显您没有在IDE中键入它。有一些非常基本的错误。请从您的一端尝试一些内容,然后发布。您是否意识到每次都将相同的地图实例推送到您的队列中?你的循环只是简单地向映射添加新数据…尝试创建一个新映射,而不是在实际程序中调用类2的pushDataObject,我在Constructor中创建了它。谢谢。。。。。。。。。。。。为了理解实际的问题,上面的代码工作得很好,都是猜测工作;别忘了,一个具有预期输出的可运行示例会有很长的路要走;下一次以后,我将在测试后放置示例代码,并提供预期的输出
Data:10
Data:{0=one}
Data:{1=one}
Data:{2=one}
Data:{3=one}
Data:{4=one}
Data:{5=one}
Data:{6=one}
Data:{7=one}
Data:{8=one}
Data:{9=one}
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;

public class Test {

    public static void main(String[] args) {
        One one = new One();
        Two two = new Two();
        one.functionOne(two);
        two.functionTwo();

    }

    static class One {

        public void functionOne(Two obj2) {
                Map<Integer, String> map = new LinkedHashMap<Integer, String>();
            for (int i = 0; i < 10; i++) {
                map.put(i, "one");
                obj2.pushData(map);
            }
        }

    }

    static class Two {

        Queue queue = new LinkedList();

        public void pushData(Map<Integer, String> map) {
            queue.add(map);
        }

        public void functionTwo() {
            System.out.println("Data:" + queue.size());
            while (queue.size() > 0) {
                System.out.println("Data:" + queue.poll());
                // Here I have also used queue.remove();
            }
        }
    }

}