Java 高效地重新安排列表<;对象>;删除X对象后

Java 高效地重新安排列表<;对象>;删除X对象后,java,Java,在完成一个小型数据库项目后,我偶然发现了一个问题。我有一个Student对象,该对象的ID取决于JTable行编号(因此,没有任何内容未与我存储的列表Student进行“同步”) 删除多个Student对象后,我会注意到list.get(int-index)与JTable\getRow(int-row)不同。在做了一些个人工作之后,我想到了以下几点 公共类ListIDTest{ 公共静态void main(字符串[]args){ 列表对象=新的ArrayList(); 添加(新对象(“第一”,

在完成一个小型数据库项目后,我偶然发现了一个问题。我有一个
Student
对象,该对象的ID取决于JTable行编号(因此,没有任何内容未与我存储的
列表Student
进行“同步”)

删除多个Student对象后,我会注意到
list.get(int-index)
JTable\getRow(int-row)
不同。在做了一些个人工作之后,我想到了以下几点


公共类ListIDTest{
公共静态void main(字符串[]args){
列表对象=新的ArrayList();
添加(新对象(“第一”,1));
添加(新对象(“第二个”,2));
添加(新对象(“第三”,3));
String temp=JOptionPane.showInputDialog(null,
“身份证”,
“删除”,
JOptionPane.INFORMATION(信息和消息);
objects.remove(Integer.parseInt(temp)-1);
用于(对象o:对象){
System.out.println(“对象名:+o.getName());
System.out.println(“对象ID:+o.getId());
}
}
}

案例一:

投入:3

输出:
对象名称:第一个
对象ID:1
对象名称:秒
对象ID:2

案例二:

投入:2

输出:
对象名称:第一个
对象ID:1
对象名称:第三个
对象ID:3


案例2中的问题是,数据库现在将打印S.ID1和2的两个学生,而不是1和3(列表索引是这样的)。我想让JTable以递增的顺序打印S.ID,而不是跳转,相反,我应该以有效的方式重新排列列表,现在将列表索引更改回与JTable中的S.ID相同的位置


显然,我可以声明一个新的
列表temp
,然后将当前列表添加到其中,然后保存集合,但是如果我有200-300名学生,我认为这不是一个有效的方法。有什么建议吗?

实际上,当您从
数组列表中删除第i个对象时,删除对象后的对象索引将减少1

因此,如果将循环更改为:

for(int i=0;i<objects.length;i++){
    Object o = objects.get(i);
    System.out.println("Object name: " + o.getName());
    System.out.println("Object ID: " + i);
}

for(int i=0;哇哦,我的错,忘了这一点,菜鸟的错误。你是对的!谢谢@Eran,我得看看是什么导致了我的问题。
for(int i=0;i<objects.length;i++){
    Object o = objects.get(i);
    System.out.println("Object name: " + o.getName());
    System.out.println("Object ID: " + i);
}