使用Java的无限对象?

时间:2018-05-23 01:20:56

标签: java arrays object inheritance

注意:我正在寻找有关此问题的简单反馈,不是任何人都可以完成此问题。

是否可以创建一个只使用数组和继承创建无限量对象的程序?例如,允许雇主使用可以在每次雇用人员时创建新员工的系统。该程序还需要为每个员工提供唯一标识符 - 因此需要针对已创建的所有其他员工ID检查一个新员工ID,以确保其不重复。

我做过一些研究,有些人提到过ArrayLists。我问,因为这是一个关于期中考试的问题,但我并不是在寻找新方法来完成这个程序 - 只是询问它是如何只使用数组和继承的。我知道阵列是固定的,所以我不确定如何不断添加新员工。

如果我想以一名员工Jen为例,我知道我会去: 员工jen =新员工();

为了使这个程序工作,我假设我必须创建通用对象,每个对象的名称都不同于已创建的任何其他对象。这可能与我提到的(仅使用数组和继承)?从我读过的内容来看,似乎这个程序是不可行的,但教授给出了这个问题,所以我想知道是否还有另一种思考这个问题的方法。

编辑,因为人们在做假设而不是阅读我的问题。提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果您不允许使用ArrayLists,您可以"扩展"手动使用普通数组。例如,检查当前数组是否已满,如果是,则创建一个大小为当前数组大小两倍的新数组并复制其所有当前值,并将该新数组指定为当前数组。

除了使用ArrayLists之外,它将是更多的代码和更低的效率,因为这是使用Collections框架的主要目的之一。

答案 1 :(得分:0)

任何时候我必须执行这样的任务,我总是使用ArrayLists,向ArrayList添加新项,然后在ListView等中使用它之前将ArrayList转换为数组。

但是,如果我不能首先使用ArrayList,你可以随时获取初始数组并将其转换为原始数组大小为+ 1的第二个数组。

String[] arr1 = new String[1];
String[] arr2;

arr2 = new String[arr1.length() + 1];

然后将arr1复制到arr2中。当然,这可以手动完成,但使用for循环将是最有效的。

for (int i = 0; i < arr1.length(); i++) {
    arr2[i] = arr1[i];
}

最后,您可以在最终索引处将最终项目添加到arr2中。

arr2[arr1.length() + 1] = "New Employee Information";

同样,您可以以相反的方式删除项目。它变得有点复杂,因为您需要筛选要删除的项目,或者您需要知道要删除它的项目的数组索引。但是,通过重建数组,您将始终拥有一个包含所持项目大小的数组。

显然,您可以嵌套数组和for循环,使其按照您希望的方式工作。它没有使用ArrayList那么高效,但它是一个选项。

祝你好运,快乐的编码!