如何在Java中实现数组向量?

时间:2011-10-05 12:52:38

标签: java arrays vector arraylist

我希望在Java中有一个可调整大小的结构来保留一个维度数组或类型为double的向量。什么是最好的方法?

是否可以将数组作为参数传递给Arraylist?可能是一个Vector?

如果不是什么是非常合理的解决方案?

毕竟,基于所提出的实现,从结构中获取值并在计算中使用它们的最有效方法是什么(添加数组,乘法数组等)。

7 个答案:

答案 0 :(得分:5)

您可以使用ArrayList< Double>但是,您可能会发现TDoubleArrayList效率更高,因为它包含了double[]

答案 1 :(得分:2)

使用泛型,您可以传递任何type java.lang.Object.的子类(Java原始类型不是java.lang.Objec t的子类

ArrayList<ArrayList<Double>> doubles=new ArrayList<ArrayList<Double>>();
//or
Vector<Double> doubles=new ArrayList<Double>();

当然你可以传递数组对象。

ArrayList<String[]> obj=new ArrayList<String[]>();

答案 2 :(得分:1)

创建一个ArrayList,保存对其他ArrayLists的引用,如下所示:

List<List<Double>> listOfLists = new ArrayList<List<Double>>();

List<Double> doubleList = new ArrayList<Double>();

listOfLists.add(doubleList);

您不应该创建数组列表,因为集合和数组不能很好地混合。

修改

Vector已被有效弃用。改为使用ArrayList。

答案 3 :(得分:1)

我可能会使用ListMultmap

ListMultimap<Integer, Double> listOfLists;

整数键是你的索引(0,1,2等)。此结构负责为您创建内部列表。它将检查索引中是否已存在列表,并在插入之前创建(如果适用)。

答案 4 :(得分:0)

这是针对矩阵的吗?如果是这样,请查看JAMACERN Colt,而不是尝试自己动手。

答案 5 :(得分:0)

可以List<List<Double>>List<Double[]>

您应该使用更现代的List/ArrayList而不是Vector

最有效的选择取决于你想要用它做什么,但最初,你应该看一下List接口的实现

答案 6 :(得分:0)

Java的数组对象,因此只要您传递Object,就可以传递数组。 ArrayList非常适合构建有序的数组序列;不要使用Vector,除非你有一个旧编码的API(或者你需要它实现的确切同步类型;你可能不希望这样)。

在内部,ArrayList包含Object引用数组。

如果你正在做矩形矩阵或稀疏数组,那么可以有更好的方法来实现。如果使用单个数组而不是数组数组(或者更糟的是ArrayList ArrayList)实现矩阵,则会产生更少的开销,但是您必须做更多工作来隐藏事实。稀疏数组最好作为Map的变体(本身有点贵,但你可以通过省略大量存储来节省)。