13

我想知道我是否可以拥有一个数组(或基本上是一个表),其中每个元素都是一组不同类型的对象。我的意思是我想创建这样的东西(我知道它的语法不正确,只是想证明我的想法):

List<String, int, double, Date, ... , etc > list_name

我这样做是为了确保当我将所有这些信息保存到我的数据库时,我会将所有这些信息都放在数据库的同一个条目中。这是因为我从不同站点进行了一些网络抓取以收集所有这些数据,即在列表中,字符串可能来自站点 A,int 可能来自站点 B,等等。我发现由于某些原因可能会遗漏一些信息(比如说,对于列表的特定元素,站点 A 的字符串可能丢失,其他数据就在那里,非常好。)。如果我将这些数据存储到单独的列表中,恐怕会有一些数据不匹配。

现在我的解决方案是创建一个类,比如 ClassA :

ClassA{

public String info1
public int info2
public double info3
..
..
public wtever info

}

然后我将有一个 ClassA 列表

我想知道是否有更好的方法来实现这一目标?

4

6 回答 6

5

我这样做是为了确保当我将所有这些信息保存到我的数据库中时,我会将所有这些信息保存在数据库的同一个条目中。

是的,您通过创建一个包含所有值的类来做正确的事情。

而且,正如您已经注意到的,List如果您希望执行多个数据库插入/更新,则可以创建一个此类对象。

许多持久性方案在定义类(称为DAO)的基础上运行,以表示存储在各个表中的数据。使用支持注释类的持久性提供程序(例如Hibernate)可以真正简化您与数据库的交互。我建议您更详细地研究这个主题

于 2012-10-11T08:46:09.413 回答
3

您可以使用 simple List<java.lang.Object>,因为 Java 中的所有类都是java.lang.Object. 但是,这很容易出错,如果您不小心处理它,可能会在运行时抛出 ClassCastException。就像你提到List<ClassA>的那样是正确的。但请确保ClassA在设计时一切都正确。

于 2012-10-11T08:49:19.313 回答
2

您创建用于保存这些不同类型属性的类的方式似乎很好。然后你可以使用ArrayList, 一个List这样的接口实现:

ArrayList<ClassA> list = new ArrayList<ClassA>();

然后您可以轻松地填充和操作它。

对于您的数据库操作,我建议您使用DAO(数据访问对象)类和映射器类来方便您对数据源的持久性操作。

于 2012-10-11T08:47:34.157 回答
1

您可以做的是创建一个抽象超类,您的所有类都将扩展它,然后列出它。任何扩展这个超类的类都将适合同一个列表。

当您操作您的集合时,请确保您找出您正在处理的对象类型。

public abstract class ClassA {
    // Empty
}

public class ClassB extends ClassA {
    // something something
}

public class ClassC extends ClassA {

}

public class main {
    List<ClassA> list.....
}
于 2012-10-11T08:43:31.970 回答
1

我也会这样做,即创建一个表示您要保存的一组内容的对象(也许背后隐藏着一个域概念?),然后有一个该类型的列表。

于 2012-10-11T08:46:42.283 回答
0

由于 Java 中的所有(有节制的事实)对象都继承自Object,因此您可以在需要时编写List<Object>...并转换其中的对象。请记住,这要求您绝对控制不同对象的类别。

于 2012-10-11T08:44:14.317 回答