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



我需要在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对象使用。谁能告诉我如何修复这段代码,以便我可以将键与矩形关联起来,并随后访问适当关联的数据?

为什么不直接使用HashMap<Double, Rectangle>呢?

编辑:不,这有明显的问题,因为没有保证两个双精度将彼此相等,即使在数字上他们应该。一定要翻倍吗?是否可以使用其他数字或字符串表示形式,如Long?是否存在你想要模拟的物理现实?

为什么不使用Map ?它们专门设计用于将键与值关联起来。您可以使用keySet()遍历映射的键,使用valueSet()遍历值,使用entrySet()同时遍历键和值

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

我会用TreeMap<Double, Rectangle>,只是因为自然排序是用来对结构内的条目进行排序的,所以有一个双精度是完全允许的,但是你会有检索问题(我实际上使用自己的float作为映射的键,从来没有遇到一些预防措施的问题,但这主要取决于你的数据的性质。

相关内容

  • 没有找到相关文章