用于在java中存储对象的数据集

用于在java中存储对象的数据集,java,android,object,data-structures,Java,Android,Object,Data Structures,假设我要存储多个对象: Person ------------ Employee ------------ Sales Engineer | | Customer Field Engineer So:人员、客户、员工、销售工程师、现场工程师 我需要跟踪所有这些……存储它们的最佳方式是什么?在ArrayList中?自定义阵列列表 它们的存储方式也可能影响将来的扩展—将来,这些对象可能由SQL Server中的字段生成。(此

假设我要存储多个对象:

Person ------------ Employee ------------ Sales Engineer       
  |                    |
Customer          Field Engineer
So:人员、客户、员工、销售工程师、现场工程师

我需要跟踪所有这些……存储它们的最佳方式是什么?在ArrayList中?自定义阵列列表


它们的存储方式也可能影响将来的扩展—将来,这些对象可能由SQL Server中的字段生成。(此外,这是一款Android应用程序,因此这可能是一个因素。)

如果您不确定将来需要如何访问对象,您可能会发现a提供了很大程度的灵活性

由于它使用键值对,您可以快速检索特定对象,.keys()方法提供了一种方法,可以在必要时迭代遍历整个集合。

您将需要一个
列表。您的图表建议继承,因此您希望拥有一个超类集合,并让多态性完成其余工作

您的代码可以执行以下操作:

List<Person> people = new ArrayList<Person>();
// Any class that extends person can be added
people.add(new Customer());
people.add(new FieldEngineer());
for (Person person : people) {
    System.out.println(person);
}

使用一个异构列表——在java中,您可以使用这样的泛型
list

我假设所有对象都是集合的一部分

理想情况下,员工应该有一个get/setCustomer,员工应该有一个get/SETFIELD工程师,然后结构应该类似于:

class CustomerRelationship{
    public Employee employee;
    public SalesEngineer salesEngineer;
    public Person customer;
}
如果对象不是集合的一部分,而是对象列表,那么您可能需要重新考虑您的设计。或者您可以使用instanceof everywhere(坏)

class CustomerRelationship{
    public Employee employee;
    public SalesEngineer salesEngineer;
    public Person customer;
}