可以在java中增长的二维对象

时间:2011-08-10 21:23:50

标签: java vector arraylist multidimensional-array relational

我需要将一个唯一键与Java中的每个矩形对象相关联。关键是双数据类型,矩形显然是矩形数据类型。

目前,我在矢量中有矩形,但它们对我没什么用,除非我也可以访问它们的密钥,如上面第一段所述。

我会创建一个2d数组,第一列是键,第二列是矩形,但是数组中的行数需要一直更改,所以我认为数组不会起作用。我已经研究过向量和数组列表,但我担心能够搜索和切片数据。

有人能告诉我一些简单的java代码,用于创建然后访问具有可变行数的2D数据集吗?

目前,我的原型看起来像:

ArrayList<Double> PeakList = new ArrayList<Double>();
Vector<Rectangle> peakVector = new Vector<Rectangle>();
Vector<Double> keyVector = new Vector<Double>();

if(PeakList.contains((double)i+newStartingPoint)){
    Rectangle myRect = new Rectangle(x2-5, y2-5, 10, 10);
    boolean rectFound = peakVector.contains(myRect);
    System.out.println("rectFound is:  "+rectFound);
              Double myPeak = ((double)i+newStartingPoint);
    if(rectFound!=true){
        peakVector.add(myRect);
                       keyVector.add(myPeak);
        System.out.println("rectFound was added.");
    }else{System.out.println("rectFound was NOT added.");}
}

然后,我将通过数据进行枚举,以便进行后续处理,如下所示:

Enumeration e = peakVector.elements();
    while (e.hasMoreElements()) {
        g2.fillRect(peakVector.lastElement().x, peakVector.lastElement().y, 10, 10);
    }

如您所见,随后无法将键与矩形集成。这就是我正在寻找一个2D对象的原因。任何人都可以告诉我如何修复此代码,以便我可以将键与矩形关联,然后访问相应的相关数据?

3 个答案:

答案 0 :(得分:3)

为什么不简单地使用HashMap<Double, Rectangle>

编辑:不,这有很多问题,因为不能保证两个双打彼此相等,即使它们应该在数字上相同。它必须是Double?可以使用一些其他数字或字符串表示,如龙?是否存在您想要建模的物理现实?

答案 1 :(得分:2)

为什么不使用Map?它们专门用于将键与值相关联。您可以使用keySet()valueSet()的值以及entrySet()

同时使用键和值来迭代地图的键

答案 2 :(得分:2)

Map肯定是正确答案,您不必担心域或映射函数的codomain的基数。将double作为关键数据类型禁止您使用某些预定义类型。

我会选择TreeMap<Double, Rectangle>因为自然顺序用于对结构内的条目进行排序,所以完全允许使用double,但是你会遇到检索问题(我实际上是用自己的浮点数)作为地图的关键,并且从未遇到过一些预防措施的问题,但主要取决于数据的性质。