是否存在具有ArrayList和类似Map的属性的数据结构?

时间:2013-07-12 01:33:22

标签: java arrays map arraylist multidimensional-array

我有一系列数据,其他每个值都与之前的值配对。

2 3 5 6 8 9 12 5
例如,2将被写出3和5写出与6(作为指数,但这不是真正相关)。

我永远不会确定该行中有多少个值,所以我想使用一个ArrayList,但我需要将它们链接起来。我想让2与2D阵列的风格相关联。

我无法使用地图,因为它们的键可能会遍布整个地方,因此不会有关键/值关联的任何独特特征。我只需要一个可扩展的2D数组,我不确定我能从HashMap,ArrayList,2D数组或我知道的任何其他数据结构中得到它。

任何指针?

编辑: 为了澄清,这将代表2 ^ 3 5 ^ 6 8 ^ 9等,我想最终以可读的形式打印,我还需要按最高指数值排序。所以我需要控制它们进入数据结构的顺序。

3 个答案:

答案 0 :(得分:4)

为什么不创建一个将两个数字组合在一起的类?然后,您可以使用List<Pair>来保存所有数据。

public class Pair {
    private final int a;
    private final int b;

    public Pair(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }
}

/ E

由于您需要排序,您可以Pair实施Comparable<Pair>,也可以创建Comparator<Pair>,这样您就可以使用Collections.sort来整理数据。

答案 1 :(得分:0)

构建一个ArrayList<Integer[]>,其中每个Integer[]的长度为2. ArrayList可扩展,并允许使用.get(index1)[index2]访问一对元素。

答案 2 :(得分:0)

如果订单不重要,您可以拥有列表地图,其中地图键是基础,列表中的每个项目都是基数被提升到的指数之一。

例如,如果您的行看起来像:

1 2 1 3 2 4 2 5 3 6

地图看起来像:

{ 1 -> [2, 3], 2 -> [4, 5], 3 -> [6] }