我希望在Java中有一个可调整大小的结构来保留一个维度数组或类型为double的向量。什么是最好的方法?
是否可以将数组作为参数传递给Arraylist?可能是一个Vector?
如果不是什么是非常合理的解决方案?
毕竟,基于所提出的实现,从结构中获取值并在计算中使用它们的最有效方法是什么(添加数组,乘法数组等)。
答案 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)
答案 5 :(得分:0)
可以List<List<Double>>
或List<Double[]>
。
您应该使用更现代的List/ArrayList
而不是Vector
。
最有效的选择取决于你想要用它做什么,但最初,你应该看一下List接口的实现
答案 6 :(得分:0)
Java的数组是对象,因此只要您传递Object
,就可以传递数组。 ArrayList
非常适合构建有序的数组序列;不要使用Vector
,除非你有一个旧编码的API(或者你需要它实现的确切同步类型;你可能不希望这样)。
在内部,ArrayList
包含Object
引用数组。
如果你正在做矩形矩阵或稀疏数组,那么可以有更好的方法来实现。如果使用单个数组而不是数组数组(或者更糟的是ArrayList
ArrayList
)实现矩阵,则会产生更少的开销,但是您必须做更多工作来隐藏事实。稀疏数组最好作为Map
的变体(本身有点贵,但你可以通过省略大量存储来节省)。