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