js0*_*823 4 java arrays arraylist multidimensional-array
我想实现一个看起来像这样的数据结构.
{{RowID, N1, N2, N3},
{RowID, N4, N5, N6},
{RowID, N7, N8, N9}}
Run Code Online (Sandbox Code Playgroud)
然后继续.它基本上是Java中的一个包含3列和RowID的表.我应该使用什么数据结构以及如何在代码中实现它?
Raf*_*ler 12
创建ArrayLists的ArrayList.例如:
ArrayList<ArrayList> arrayListOfLists = new ArrayList<ArrayList>();
arrayListOfLists.add(anotherArrayList);
//etc...
Run Code Online (Sandbox Code Playgroud)
有几种选择.一种方法是声明一个表示行的类.
public class MyRow{
private long rowId;
private int col1;
private int col2;
private int col3;
//etc
}
Run Code Online (Sandbox Code Playgroud)
显然,您选择了适当的数据类型和变量名称.
然后,您可以创建此类型的ArrayList:
List<MyRow> rows = new ArrayList<MyRow>();
Run Code Online (Sandbox Code Playgroud)
如果列数不变,这尤其有用.
假设 RowID 是 long 并且列数据是 Doubles,我会将此构造实现为:
import java.util.HashMap;
import java.util.Map;
...
Map<Long, Double[]> table = new HashMap<Long, Double[]>();
Run Code Online (Sandbox Code Playgroud)
存储一行:
Long rowID = 1234L;
table.put(rowID, new Double {0.1, 0.2, 0.3});
Run Code Online (Sandbox Code Playgroud)
访问一行:
Double[] row = table.get(rowID);
Run Code Online (Sandbox Code Playgroud)
将 Double[] 替换为您想要的任何数据类型 Int[]、String[]、Object[] ...
您可以使用迭代器循环访问这些数据:
import java.util.Iterator;
import java.util.Map.Entry;
...
Iterator<Entry<Long, Double[]>> iter = table.entrySet().iterator();
while (iter.hasNext()) {
Entry entry = iter.next();
rowID = entry.getKey();
row = entry.getValue();
};
Run Code Online (Sandbox Code Playgroud)
要按照数据插入的顺序迭代数据,请使用 LinkedHashMap 代替 HashMap。
归档时间: |
|
查看次数: |
17613 次 |
最近记录: |