java arraylist覆盖现有元素

java arraylist覆盖现有元素,java,arraylist,overwrite,Java,Arraylist,Overwrite,我似乎遇到了一个令人沮丧的问题——我的arraylist中的一个元素被覆盖了。我在许多论坛上看过许多帖子,但我没有设法解决它咀嚼: 在我的程序(实际上是用Java实现的FBDK函数块算法)中,我想将输入变量(PART)的数据存储到输出变量数组(PART_数组)的元素中。此过程将发生多次(随着事件的发生),因此必须将变量存储在多个数组元素中 问题是PART_数组的元素被最后一个条目覆盖。例如,对于第一个事件发生,PART_array[]=[“1”、“1”、“1”、“1”、“1”、“1”、“1”、“

我似乎遇到了一个令人沮丧的问题——我的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())问题会得到解决……显然不是

任何帮助解决这个问题的人都将不胜感激!代码如下:

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