在java中创建对列表

对于非有序的对列表,哪个类最适合? 我将采用一堆(浮动,短)对,并且需要能够执行简单的数学运算(比如将这些对相乘以返回单个浮点数等)。 List只接受一个参数,而HashMap不允许重复(据我所知)。 有什么想法吗?

你可以使用HashMap使用的Entry类,但是你会遇到它的getKeygetValue语义:

 List> pairList = //... 

我的偏好是创建自己的简单Pair类:

 public class Pair { private L l; private R r; public Pair(L l, R r){ this.l = l; this.r = r; } public L getL(){ return l; } public R getR(){ return r; } public void setL(L l){ this.l = l; } public void setR(R r){ this.r = r; } } 

然后当然使用这个新类创建一个List ,例如:

 List> pairList = new ArrayList>(); 

您也可以随时创建ListList ,但是很难强制执行大小调整(您只有对),并且与数组一样,您需要具有一致的类型。

使用自定义类实例列表。 自定义类是某种配对或坐标或其他什么。 然后就是

 List = new YourFavoriteListImplHere() 

这种方法的优点在于它满足了这个要求“执行简单的数学运算(比如将这些对相乘以返回单个浮点数等)”干净,因为你的自定义类可以有你需要做的数学方法……

只是修正Mark Elliot代码中的一些小错误:

 public class Pair { private L l; private R r; public Pair(L l, R r){ this.l = l; this.r = r; } public L getL(){ return l; } public R getR(){ return r; } public void setL(L l){ this.l = l; } public void setR(R r){ this.r = r; } } 

听起来你需要创建自己的对类(请参阅此处的讨论 )。 然后创建您创建的对类的列表

与Mark E提出的类似,你必须提出自己的想法。 只是为了帮助你一点,有一篇很好的文章http://gleichmann.wordpress.com/2008/01/15/building-your-own-literals-in-java-tuples-and-maps/给你一个非常简洁的创建元组和地图的方式,这可能是你可能想要考虑的事情。

如果你想要多重性,你可以将它放在映射对映射到ammount的映射中。 这种方式只有一对给定值,但它可以代表多次出现。

然后,如果您有很多重复值并希望对所有值执行某些操作,则可以节省大量计算。