Java 通过折叠所有元素删除二维数组中的元素

Java 通过折叠所有元素删除二维数组中的元素,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正在制作一个跟踪员工信息的程序。我有一个包含记录的2D数组([employee][piece_of_data]),我希望能够通过循环数组并使当前记录等于以下记录来删除记录 现在,它正在删除所选记录之前的记录,而不是当前记录,而且似乎无论我如何操作它,它都不会删除正确的记录 这是我的密码: //Delete current record, collapse records into it for (int iLoop = iEmployee; iLoop < iEmployeeCo

我正在制作一个跟踪员工信息的程序。我有一个包含记录的2D数组([employee][piece_of_data]),我希望能够通过循环数组并使当前记录等于以下记录来删除记录

现在,它正在删除所选记录之前的记录,而不是当前记录,而且似乎无论我如何操作它,它都不会删除正确的记录

这是我的密码:

//Delete current record, collapse records into it
    for (int iLoop = iEmployee; iLoop < iEmployeeCount; iLoop++){
        for (int iLoop2 = 0; iLoop2 <= 20; iLoop2++){
            sData[iLoop][iLoop2] = sData[iLoop + 1][iLoop2];
        }
    }
//删除当前记录,将记录折叠到其中
对于(int-iLoop=iEmployee;iLoop对于(int iLoop2=0;iLoop2我建议您不要使用这种奇怪的双数组,而是以正确的方式解决此问题。当前代码凌乱且不可维护。更糟糕的是,它可能会复制记录,因为在您左移2D数组中的所有列后,最后一列将包含第二列的副本最后一栏

Java是一种面向对象的语言。使用对象

//declare a class to store the info about one employee
//this will replace one column in your double array
public class Employee {
 //each one of these fields corresponds to one cell in your double array
 public string data1; 
 public string data2;
 public string data3;
}
然后将它们存储在链接列表中:

//this is just an example of how you would add employees to a list instead of an array
LinkedList<Employee> employees = new LinkedList<>(); //make a linked list
Employee toAdd = new Employee();                     //make an employee
toAdd.data1 = "example";                             //set up his data
toAdd.data2 = "setting";
toAdd.data3 = "fields";
employees.add(toAdd);                                //add him to the list

其中,IEEMPLOYEE是要删除的员工列表中的编号。

因为您无法将矩阵转换为对象,并且无法对整个事件使用ArrayList,因此有一种方法:

ArrayList<String[]> a=new ArrayList(Arrays.asList(sData));
a.remove(iEmployee);
arraylista=新的ArrayList(Arrays.asList(sData));
a、 解雇(雇员);
这将矩阵转换为字符串数组的ArrayList

Object[] oa = a.toArray();
for(int i = 0; i<oa.length; i++){
    sData[i] = (String[])oa[i];
}
Object[]oa=a.toArray();

对于(int i=0;您是否尝试了`sData[iLoop-1][iLoop2]=sData[iLoop][iLoop2];`?是的,但无论我如何更改它,即sData[iLoop-2][iLoop2]=sData[iLoop-1][iLoop2];,它仍然会删除当前记录之后的记录,但最终它会给出一个越界异常。我很困惑,这是一段如此简单的代码。它必须是固定数组吗?或者你能使用ArrayList或其他集合吗?你有什么原因不能创建对象类吗?老实说,我是一个初学者,而且是project这段代码是我所做过的最大、最复杂的代码,在这一点上修改这样的东西真的会把我搞得一团糟。我以前从未使用过ArrayList或其他类似的东西,但我想我需要重建很多东西。(我只有2天的时间才能交上来)。一个项目有多大?使用ArrayList中的员工数组和ArrayList中的数据数组可能是最简单的。用这个来替换矩阵也不太坏。看看如何使用ArrayList,它们非常有用。谢谢,这里的内容非常有用,在我想做类似的事情之前,我一定会在这里参考这是我高中最后的表演任务,我早就过了不归路。如果我重新开始,我会做很多不同的事情(包括这一点),但我已经接近尾声了,我的程序中的一切都围绕着这个特定的数组。我现在需要的就是解决这个问题。
Object[] oa = a.toArray();
for(int i = 0; i<oa.length; i++){
    sData[i] = (String[])oa[i];
}