在 Java 中将数组添加到队列(指针问题?



我正在读取一个传感器,并希望获得一定数量的消息的平均值,所以我正在对它们求和,并且我使用队列在添加新测量值时从总和中删除第一个测量值。

问题是队列没有像我预期的那样响应数组,它以某种方式充当指针,因此当原始值更新时,历史记录也会随之更改。

import java.util.Queue;
Queue<int[]> q = new LinkedList();
int[] t = new int[1];
int len = 3;
void setup() 
{
for(int i=0;i<len;i++){
t[0]=len-i;
q.add(t);
}
for(int i=0;i<len;i++){
print(q.remove()[0]);print(';');
}
}

此代码的结果是:1;1;1;

预期结果为:3;2;1;

问题是,如何正确地将数组添加到队列?

您必须在 for 循环的每次迭代中实例化数组,否则它将与将被修改的引用相同

Queue<int[]> q = new LinkedList();
int len = 3;
void setup() {
for (int i = 0; i < len; i++) {
int[] t = new int[1];
t[0] = 5 - i;
q.add(t);
}
for (int i = 0; i < len; i++) {
print(q.remove()[0]);
print(';');
}
}

相关内容

  • 没有找到相关文章

最新更新