java arraylist覆盖现有元素
我似乎遇到了一个令人沮丧的问题——我的arraylist中的一个元素被覆盖了。我在许多论坛上看过许多帖子,但我没有设法解决它咀嚼: 在我的程序(实际上是用Java实现的FBDK函数块算法)中,我想将输入变量(PART)的数据存储到输出变量数组(PART_数组)的元素中。此过程将发生多次(随着事件的发生),因此必须将变量存储在多个数组元素中 问题是PART_数组的元素被最后一个条目覆盖。例如,对于第一个事件发生,PART_array[]=[“1”、“1”、“1”、“1”、“1”、“1”、“1”、“1”、“1”、“1”、“1”。然后,在第二次出现时,我发现部分数组[]=[“1”、“2”、“1”、“2”、“1”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“2”、“3”、“3”)并没有部分数组[],而是显示了覆盖。我意识到存储到PART_ARRAY ArrayList已经发生覆盖。我认为通过重新初始化(p=newpart())问题会得到解决……显然不是 任何帮助解决这个问题的人都将不胜感激!代码如下:java arraylist覆盖现有元素,java,arraylist,overwrite,Java,Arraylist,Overwrite,我似乎遇到了一个令人沮丧的问题——我的arraylist中的一个元素被覆盖了。我在许多论坛上看过许多帖子,但我没有设法解决它咀嚼: 在我的程序(实际上是用Java实现的FBDK函数块算法)中,我想将输入变量(PART)的数据存储到输出变量数组(PART_数组)的元素中。此过程将发生多次(随着事件的发生),因此必须将变量存储在多个数组元素中 问题是PART_数组的元素被最后一个条目覆盖。例如,对于第一个事件发生,PART_array[]=[“1”、“1”、“1”、“1”、“1”、“1”、“1”、“
public class STORE_TO_ARRAY extends fb.rt.FBInstance {
public ArrayList<Part> PART_ARRAY = new ArrayList<Part>();
Part p = new Part();
/** The default constructor. */
public STORE_TO_ARRAY() {
super();
}
/** ALGORITHM REQ IN Java*/ -- a method called in the program
public void alg_REQ() {
int ct = 0;
ct = current_task;
if (ct <= NumOfTasks) {
//write received input data to output variable array elements
//this is where the problem occurs!!!!
p.setPart(PART); //set value of Part
PART_ARRAY.add(ct-1,p); //adding to arraylist
Part p = new Part(); //trying to reinitialise the object
}
}
}
public class Part {
WSTRING part;
void setPart(WSTRING part) {
this.part = part;
}
WSTRING getPart() {
return part;
}
}
下面的代码创建了一个局部变量(在下一行中,它超出了范围,在使用之前消失),而不是为类变量分配一个新的值(我假设您正试图这样做) 尝试将其替换为
p = new Part(); //trying to reinitialise the object
另一方面,一个像样的IDE(比如NetBeans)应该给你一个关于创建一个隐藏类变量的局部变量的警告。Wow-这是一个令人困惑的代码。。。乍一看,我不会说它是Java!我希望你能在一周内记住
部分数组
、部分数组
和部分数组
之间的区别……这些代码看起来很难看,甚至根本无法编译。您知道INT
和INT
在Java
中是两个不同的东西吗?请尝试创建一个简化的示例,它仍然可以复制问题。这样做有几个原因:1。大约90%的情况下,仅仅是这样做就可以帮助你理解并修复出了什么问题。2.如果没有,您可以使用一个很好的、简单的、自包含的示例来寻求帮助。好吧,我为代码混乱道歉。我现在编辑了问题,只显示了与我的问题相关的代码。它只关注我在part_数组ArrayList中添加一个part的部分。如果有人能告诉我为什么它会覆盖现有的ArrayList元素,以及一个解决方案,那将是非常棒的,并且非常感谢。除此之外,缩进是不正确的,我错过了当前任务的声明。我没有进一步阅读,因为没有正确的格式很难跟踪代码。
p = new Part(); //trying to reinitialise the object