在我的项目中,我需要从互联网加载 aml 数据,然后解析它。我在解析xml时没有问题。每个 xml 有 20 个元素。让我用一个示例来解释我的问题。
这是xml的格式:
<XML>
<Item1>
<element1>a</element1>
<element2>b</element2>
...
<element20>f</element20>
</Item1>
<Item2>
<element1>d</element1>
<element2>s</element2>
...
<element20>l</element20>
</Item2>
...
</XML>
我的问题是关于我想要创建的类。一种方法是创建类并将每个元素作为其属性,例如:
class myItems {
private String element1;
private String element2;
...
private String element20;
//and also adding all setters and getters
}
因此,XML 的每一项都会有一个此类的对象。因此,如果我的 xml 文件中有 100 个项目,我将拥有 100 个此类的对象。
第二种方法是在类中使用ArrayList。像这样:
Class myItems {
ArrayList<String> element1 = new ArrayList<String>();
ArrayList<String> element2 = new ArrayList<String>();
...
ArrayList<String> element20 = new ArrayList<String>();
//and for setters and getters
public ArrayList<String> getElement1() {
return element1;
}
public void setElement1(String str) {
this.element1.add(str);
}
...
}
因此,我有一个对象,它包含我的所有变量。
我的问题是,就速度、内存消耗和其他方面而言,这些方法中哪一种更好?
最佳答案
在我看来,做到这一点的最佳方法是对您试图表示的对象有一个清晰的模型,作为一个类:
class Item {
private member; // etc.
...
}
您需要将 XML 结构中无意义的内容抽象到您的类中。例如,如果可行的话,您可以将 XML 中的两个或三个元素合并到一个成员中。您可以在创建对象时执行此操作。您最终将获得更小的足迹(更少的公共(public)方法)和更清晰的实现。然后,您可以将程序中的项目列表表示为 List
:
List<Item> allItems = new ArrayList<Item>()
就我个人而言,我相信如果您从一开始就没有面临严重的性能限制(我认为您不会),那么清晰和干净的实现胜过性能。您现在应该更加小心设计而不是性能。 Premature optimization通常被视为一件坏事。
不相关,here is an interesting presentation关于 Java 内存消耗:)。
关于Java,以下哪种方法更能实现更快的响应和内存管理? 100 个类的对象或 1 个带有 arrayList 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9191505/