Java - 将哈希表划分为列表

标签 java xml list arraylist hashtable

例如,我有这些对:

key => name:

"name" => "myname1"
"height" => "myheight1"
"name" => "myname2"
"height" => "myheight2"

现在,如果我将所有这些放入 Hashtable,那么第二个 nameheight 键将覆盖第一个键 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 文档结构)。这是一个例子:

http://groovyconsole.appspot.com/edit/1445001

关于Java - 将哈希表划分为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19953699/

相关文章:

java - web.xml 中的 servlet 类路径

python - python中的递归排序

java - 实现基于节点的图形 GUI 的最佳/最简单方法?

java - 安卓服务器时间

java - 从子元素创建 XPath

Python 和 ElementTree : How can I nest elements/subelements in an XML?

python - 从列表中的每个键获取具有最大值的元组

Python - 元组 - 检索元组列表中的唯一元素

java - 日期到字符串解析

java - 覆盖泛型方法的正确方法是什么?