Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除ArrayList的项并更新元素的索引_Java_Arrays_Arraylist_Indexing - Fatal编程技术网

Java 如何删除ArrayList的项并更新元素的索引

Java 如何删除ArrayList的项并更新元素的索引,java,arrays,arraylist,indexing,Java,Arrays,Arraylist,Indexing,我有一个ArrayList存储名为QuestionText的对象。这是下面对象的类 package me.bigbaddevil7.QnA; public class QuestionText { int index; String username; String message; public QuestionText(int index, String username, String message){ this.index = ind

我有一个
ArrayList
存储名为
QuestionText
的对象。这是下面对象的类

package me.bigbaddevil7.QnA;

public class QuestionText {
    int index;
    String username;
    String message;

    public QuestionText(int index, String username, String message){
        this.index = index;
        this.username = username;
        this.message = message;
    }


    public void setIndex(int i){
        index = i;
    }

    public void setUsername(String user){
        username = user;
    }

    public void setMessage(String msg){
        message = msg;
    }

    public int getIndex(){
        return index;
    }

    public String getUsername(){
        return username;
    }

    public String getMessage(){
        return message;
    }
}
我遇到的这个问题是,所有问题对象都将存储在一个ArrayList中,以后可以访问和操作它,我希望索引能够正确更新

例如,我们添加了“艾比”、“鲍勃”、“卡尔”。相应的索引为0,1,2。如果我做了一个简单的删除(1)。然后是“Abby”,“Carl”,显示的索引是0,2,我想要0,1。使用getIndex()显示索引


我研究了数组如何处理删除项并将数组复制到新项的问题,但由于这种情况可能会发生很多次,我不知道这是否是解决此问题的最佳方法。

您正在处理此问题,就好像索引是
QuestionText
类的属性一样。然而,情况并非如此。更改
ArrayList
中问题的顺序不应影响
QuestionText
对象。索引是其在
ArrayList
中位置的结果;这不是问题的本质部分


我将从
QuestionText
类中完全删除
index
变量和相关的getter/setter。索引取决于
ArrayList
类。与数组一样,这些索引是固定的,从
0
开始。使用
数组列表中的索引作为替代。

您正在处理这个问题,就像索引是
问题文本
类的属性一样。然而,情况并非如此。更改
ArrayList
中问题的顺序不应影响
QuestionText
对象。索引是其在
ArrayList
中位置的结果;这不是问题的本质部分


我将从
QuestionText
类中完全删除
index
变量和相关的getter/setter。索引取决于
ArrayList
类。与数组一样,这些索引是固定的,从
0
开始。使用
数组列表中的索引作为替代。

您正在处理这个问题,就像索引是
问题文本
类的属性一样。然而,情况并非如此。更改
ArrayList
中问题的顺序不应影响
QuestionText
对象。索引是其在
ArrayList
中位置的结果;这不是问题的本质部分


我将从
QuestionText
类中完全删除
index
变量和相关的getter/setter。索引取决于
ArrayList
类。与数组一样,这些索引是固定的,从
0
开始。使用
数组列表中的索引作为替代。

您正在处理这个问题,就像索引是
问题文本
类的属性一样。然而,情况并非如此。更改
ArrayList
中问题的顺序不应影响
QuestionText
对象。索引是其在
ArrayList
中位置的结果;这不是问题的本质部分


我将从
QuestionText
类中完全删除
index
变量和相关的getter/setter。索引取决于
ArrayList
类。与数组一样,这些索引是固定的,从
0
开始。改为使用
数组列表中的索引。

为什么需要在课堂上记录它的索引?你不能随时调用list.indexOf(QuestionText)吗?由于索引容易更改,因此存储易于更改的值不是一个好主意。无论何时修改列表,都必须在修改后更新每个元素的索引

为了回答你的问题,我将把你的二传手改为

public void setIndex(){
    index = list.indexOf(this);
}
你必须在课堂上保留对你的列表的引用。同样,无论何时修改列表,都必须对修改后的元素后的所有元素调用
setIndex

另一种可能更好的方法是让你的二传手保持原样。但是,无论何时修改arraylist,都必须执行类似的操作

for(int i = (index of modified element);i<list.length();i++){
    list.get(i).setIndex(i);
}

for(int i=(修改元素的索引);i为什么需要在类中保留它的索引记录?难道不能调用list.indexOf(QuestionText)无论何时需要它?由于索引容易更改,因此存储易于更改的值不是一个好主意。无论何时修改列表,都必须在修改后更新每个元素的索引

为了回答你的问题,我将把你的二传手改为

public void setIndex(){
    index = list.indexOf(this);
}
你必须在类中保留对列表的引用。同样,每当你修改列表时,你必须对修改后的所有元素调用
setIndex

另一种可能更好的方法是保持setter的原样

for(int i = (index of modified element);i<list.length();i++){
    list.get(i).setIndex(i);
}

for(int i=(修改元素的索引);i为什么需要在类中保留它的索引记录?难道不能调用list.indexOf(QuestionText)无论何时需要它?由于索引容易更改,因此存储易于更改的值不是一个好主意。无论何时修改列表,都必须在修改后更新每个元素的索引

为了回答你的问题,我将把你的二传手改为

public void setIndex(){
    index = list.indexOf(this);
}
你必须在类中保留对列表的引用。同样,每当你修改列表时,你必须对修改后的所有元素调用
setIndex

另一种可能更好的方法是让二传手保持原样