【问题标题】:java: how do I create an array of tuplesjava:如何创建元组数组
【发布时间】:2010-05-02 17:44:57
【问题描述】:

如何在 jsp (java) 中创建元组数组 喜欢 (a:1, b:2) (c:3, d:4) ... ...

【问题讨论】:

    标签: java jsp data-structures set tuples


    【解决方案1】:

    创建一个元组类,类似于:

    class Tuple {
        private Object[] data;
        public Tuple (Object.. members) { this.data = members; }
        public void get(int index) { return data[index]; }
        public int getSize() { ... }
    }
    

    然后只需创建一个 Tuple 实例数组。

    【讨论】:

    • 这是 Java 吗?为什么这么赞成?数组上的“data.size()”?没有错误检查越界?为什么不使用像 ArrayList 这样的现有类,它可以更好地实现这种行为?
    • @Pindatjuh,您为什么不对这个问题提供自己的答案?看来你有东西要分享。
    • @Pindatjuh,我说“像这样”。这是类的骨架,只是为了让他明白它应该做什么。它没有经过测试或任何东西。
    • @Pindatjuh,元组通常是不可变的,所以这是一个相对好的表示......虽然构造函数确实应该是public Tuple而不是public void Tuple
    • 我们登月已经 50 年了,,,元组仍然不是 Java 核心库的一部分 woahhh
    【解决方案2】:

    如果您想要一个任意大小的元组,perl 哈希样式,请使用 Map<K,V>(如果您有固定类型的键值 - 您的示例看起来像 Map<Character,Integer> 会起作用 - 否则使用原始类型)。查找 java 集合以获取有关各种实现的更多详细信息。

    鉴于这些元组,如果您想将它们放入顺序集合中,我会使用 List(再次查找集合库)。

    所以你最终得到了

    List<Map<K,V>> listOfTuples
    

    如果您需要更具体的内容(例如,您的元组中将始终包含 x1、x2、x3),请考虑将映射设置为 EnumMaps - 您可以限制您拥有的键,并且如果您指定默认值(或创建过程中的一些其他约束)保证某些东西会出来。

    【讨论】:

      【解决方案3】:

      Java 中没有默认的 pair / n-tuple 类;你必须自己动手。

      【讨论】:

        【解决方案4】:

        你可以使用 HashSet 类。

        【讨论】:

          【解决方案5】:

          如果你在处理固定大小的元组,属性的名称是固定的,你自己定义一个简单的数据类,然后定义这个类的数组。

          另一方面,如果您希望属性名称灵活且在运行时确定,请使用 Map 结构。在上面的示例中,似乎 HashMap 可以完成这项工作。您可能想要包装它以减少其功能,也可能添加更具体的功能。

          【讨论】:

            【解决方案6】:

            我知道我参加聚会迟到了,但一系列积分应该可以完成这项工作。

            查看here 以查看有关积分的文档。

            【讨论】:

              猜你喜欢
              • 2014-08-23
              • 1970-01-01
              • 2017-04-28
              • 2012-01-04
              • 1970-01-01
              • 2010-11-07
              • 2010-12-31
              • 1970-01-01
              • 2022-01-01
              相关资源
              最近更新 更多