我需要将一个唯一键与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对象的原因。任何人都可以告诉我如何修复此代码,以便我可以将键与矩形关联,然后访问相应的相关数据?
答案 0 :(得分:3)
为什么不简单地使用HashMap<Double, Rectangle>
?
编辑:不,这有很多问题,因为不能保证两个双打彼此相等,即使它们应该在数字上相同。它必须是Double?可以使用一些其他数字或字符串表示,如龙?是否存在您想要建模的物理现实?
答案 1 :(得分:2)
为什么不使用Map
?它们专门用于将键与值相关联。您可以使用keySet()
,valueSet()
的值以及entrySet()
答案 2 :(得分:2)
Map
肯定是正确答案,您不必担心域或映射函数的codomain的基数。将double
作为关键数据类型禁止您使用某些预定义类型。
我会选择TreeMap<Double, Rectangle>
因为自然顺序用于对结构内的条目进行排序,所以完全允许使用double,但是你会遇到检索问题(我实际上是用自己的浮点数)作为地图的关键,并且从未遇到过一些预防措施的问题,但主要取决于数据的性质。