我的问题是用 Java 存储人员的详细信息。我查了一下Oracle网站主题How to Use Tables并发现可以使用对象数组(二维)来存储详细信息。
但我的兴趣是创建一个动态对象数组,这样我就可以存储任意数量的数据,并且还接受输入来存储来自用户的这些详细信息。例如,在程序开始时,我可以指定一个对象数组来保存 5 条记录,但实际上我想要一个数组,如果我需要添加更多记录(动态),它可以添加另一个可用位置。
有没有办法在java中实现这一点?如果是这样,您是否知道我可以开始的任何好地方,也许是一个链接。使用对象数组存储是最好的选择吗?
最佳答案
数组保存同质数据,即通常数组的每个单元中的所有内容的类都是相同的。您可能不想将一个人的名字和他的鞋子尺码存储在相同类型的字段中,所以......让我们删除数组的维度之一。您应该声明一个名为 Person
的类,并在其中指定您想要为某个人存储的所有属性。完成此操作后,您将只想存储 Person
的一维数组(或其他内容)。
接下来,请注意数组的大小是固定的。如果你想扩展一个数组,你需要分配一个更大的新数组,将旧数组的内容复制到新数组中,然后继续使用新数组代替旧数组。
这需要大量工作,而且容易出错。用Apple修改后的话来说,有一个类可以做到这一点!较旧的限定类是 Vector
,该类可以在其中存储对象,并且每次向其中添加新对象时该类都会增长。如今,用于此目的的类(效率更高一些)是ArrayList
。同样的事情:你做
ArrayList<Person> myList = new ArrayList<Person>();
然后就可以重复
newPerson = new Person("Bruce", "Wayne", 1972, "Gotham City");
myList.add(newPerson);
您可以通过执行以下操作来访问列表中的人员
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 p = myMap.get(id);
关于java - Java中如何存储多人信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217989/