例如,我有这些对:
key => name:
"name" => "myname1"
"height" => "myheight1"
"name" => "myname2"
"height" => "myheight2"
现在,如果我将所有这些放入 Hashtable,那么第二个 name
和 height
键将覆盖第一个键 name
和 height
键名。我可以将它添加到两个不同的哈希表中,但在运行前,我不知道会有多少这样的对,所以我不知道我需要多少个哈希表。那么如何将这些巴黎添加到列表中(在运行时之前不知道此类对的确切数量(例如,有时可能有三个名称键和两个高度键及其值等)。
所以当我添加所有这些值时,我需要在列表中显示如下:
list<list<Object>> = [[{name=myname1, height=myheight1}], [{name=myname2, height=myheight2}]]
例如,如果有不同数量的此类对,例如两个名称对和三个高度对:
list<list<Object>> = [[{name=myname1, height=myheight1}], [{name=myname2, height=myheight2}], [{height=myheight3}]]
注意:我从 xml 文件中得到这些对,所以它们在某种程度上是分组的,就像每次迭代我得到一组这样的对。例如
<main>
<group>
<name>myname1</name>
<height>myheight1</height>
</group>
<group>
<name>myname2</name>
<height>myheight2</height>
</group>
</main>
那么我怎样才能正确地将这样的对添加到列表中,这样键就不会相互覆盖,以后我可以从列表中得到任何我想要的对?
最佳答案
为什么不直接使用列表:
List<Group> groups = new ArrayList<Group>();
其中 Group
定义为
public class Group {
private final String name;
private final int height;
public Group(String name, int height) {
this.name = name;
this.height = height;
}
// getters are left as an exercise to the reader
}
(根据高度的表示,您可能需要使用除 int 之外的其他类型)。
编辑
另一种选择是使用动态语言,例如 Groovy,它使此类任务变得更加容易(因为您不必跟踪 XML 文档结构)。这是一个例子:
关于Java - 将哈希表划分为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19953699/