Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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中存储关于许多人的信息_Java_Object_Multidimensional Array_Dynamic - Fatal编程技术网

如何在Java中存储关于许多人的信息

如何在Java中存储关于许多人的信息,java,object,multidimensional-array,dynamic,Java,Object,Multidimensional Array,Dynamic,我的问题是用Java存储人员的详细信息。我查阅了Oracle网站主题,发现可以使用对象数组(二维)来存储详细信息 但我的兴趣是制作一个动态对象数组,这样我就可以存储任意数量的数据,并且获取输入来存储用户提供的这些细节。例如,在程序开始时,我可以指定一个对象数组来保存5条记录,但实际上我想要一个数组,如果我需要添加更多记录,它可以添加另一个可用位置(动态) 在java中有没有一种方法可以做到这一点?如果是这样的话,你知道我可以从哪里开始吗,也许是一个链接。使用对象数组存储是最好的选择吗?查看jav

我的问题是用Java存储人员的详细信息。我查阅了Oracle网站主题,发现可以使用对象数组(二维)来存储详细信息

但我的兴趣是制作一个动态对象数组,这样我就可以存储任意数量的数据,并且获取输入来存储用户提供的这些细节。例如,在程序开始时,我可以指定一个对象数组来保存5条记录,但实际上我想要一个数组,如果我需要添加更多记录,它可以添加另一个可用位置(动态)


在java中有没有一种方法可以做到这一点?如果是这样的话,你知道我可以从哪里开始吗,也许是一个链接。使用对象数组存储是最好的选择吗?

查看java.util.List、java.util.Map和System.arraycopy,了解一些对您有帮助的数据结构。

查看java.util.List、java.util.Map、,和System.arraycopy以获取一些数据结构,这些数据结构将对您有所帮助。

首先,您应该了解传递给JTable的
对象数组不会被存储。它只用于显示您所做工作的记录。要存储已有的值,必须使用文件或数据库


您可以动态设置对象数组大小,这样您应该知道需要显示多少条记录。我认为JDK1.6不能动态更改数组的大小,但即将推出的JDK7可能会提供这样的功能。

首先,您应该了解传递给JTable的
对象数组不会被存储。它只用于显示您所做工作的记录。要存储已有的值,必须使用文件或数据库

您可以动态设置对象数组大小,这样您应该知道需要显示多少条记录。我认为JDK 1.6不能动态更改数组的大小,但即将推出的JDK 7可能会提供这样的功能。

数组包含同质数据,即通常数组中每个单元格中的所有内容的类都是相同的。您可能不希望在同一类型的字段中存储一个人的姓名和鞋号,因此。。。让我们去掉数组的一个维度。您应该声明一个名为
Person
的类,并在其中指定要为Person存储的所有属性。这样做之后,您只需要存储
Person
的一维数组(或其他东西)

接下来,请注意数组的大小是固定的。如果你想扩展一个数组,你需要分配一个新的、更大的数组,把旧数组的内容复制到新数组中,然后继续使用新数组代替旧数组

这需要大量的工作,而且容易出错。用苹果公司的话来说,这是一个很好的例子!较旧的限定类是
Vector
,一个可以存储对象的类,每次添加新对象时,该类都会增长。现在,用于此的类(效率更高)是
ArrayList
。同样的道理:你知道

ArrayList<Person> myList = new ArrayList<Person>();
您可以通过执行以下操作访问列表中的人员

int personNumber = 0;
Person retrievedPerson = myList.get(personNumber);
甚至

for (Person someone : myList) {
   System.out.println(someone);
}

编辑 好的,要存储具有ID的人员并通过该ID访问他们(假设人员ID为整数),一些适当的代码如下:

TreeMap<Integer, Person> myMap = new TreeMap<Integer, Person>();

newPerson = ...
myMap.put(newPerson.getId(), newPerson);
数组保存同质数据,即通常数组中每个单元格中所有内容的类都是相同的。您可能不希望在同一类型的字段中存储一个人的姓名和鞋号,因此。。。让我们去掉数组的一个维度。您应该声明一个名为
Person
的类,并在其中指定要为Person存储的所有属性。这样做之后,您只需要存储
Person
的一维数组(或其他东西)

接下来,请注意数组的大小是固定的。如果你想扩展一个数组,你需要分配一个新的、更大的数组,把旧数组的内容复制到新数组中,然后继续使用新数组代替旧数组

这需要大量的工作,而且容易出错。用苹果公司的话来说,这是一个很好的例子!较旧的限定类是
Vector
,一个可以存储对象的类,每次添加新对象时,该类都会增长。现在,用于此的类(效率更高)是
ArrayList
。同样的道理:你知道

ArrayList<Person> myList = new ArrayList<Person>();
您可以通过执行以下操作访问列表中的人员

int personNumber = 0;
Person retrievedPerson = myList.get(personNumber);
甚至

for (Person someone : myList) {
   System.out.println(someone);
}

编辑 好的,要存储具有ID的人员并通过该ID访问他们(假设人员ID为整数),一些适当的代码如下:

TreeMap<Integer, Person> myMap = new TreeMap<Integer, Person>();

newPerson = ...
myMap.put(newPerson.getId(), newPerson);

好的,这似乎是一个好主意,但是我希望能够使用一个say,例如记录中的主键(比如person id)来检索所有细节(显然可以通过包含person id的LinkedList完成),还可以通过person id检索某些细节,比如年龄和性别(可能通过地图界面)。是否有一个接口来执行这两个操作?我所指的映射接口是TreeMapOk,这似乎是个好主意,但是我希望能够使用诸如记录中的主键(如person id)来检索所有详细信息(显然可以由包含person id的LinkedList完成)还可以通过个人id(可以通过地图界面)检索某些细节,如年龄和性别。是否有一个接口来执行这两个操作?我指的映射接口是树映射