我有一个 ,和的数据集row_id
,用于输入矩阵(即一些 2D 数据结构),并且这些值在输入中没有按排序顺序给出。col_id
value
例如。
1,1,0.3
4,1,0.5
2,3,0.4
等等。
我不知道 or 的最大可能值,row_ID
所以col_ID
我不能有一个固定的大小array
。我想过使用ArrayList
,但是由于我需要在任何给定索引上输入值ArrayList
(例如行/列尚未初始化),我最终得到了一些奇怪的代码,因此我必须随时创建新行给定的行大小不存在。
public void reduce(LongWritable key, Iterable<Text> values, Context context throws IOException, InterruptedException{
ArrayList<ArrayList<Double>> vArray = new ArrayList<ArrayList<Double>>();
for(Text val : values){
String[] line = value.toString().split(",", 3);
int rowID = Integer.parseInt(line[0]);
int colID = Integer.parseInt(line[1]);
int value = Integer.parseInt(line[2]);
if(vArray.size() < rowID){ //checking if this row already exists
for(int i=0; i < rowID; i++){
//add a row
ArrayList<Double> row = new ArrayList<Double>();
vArray.add(row);
for(int j=0; j < colID; j++){
//add a column
vArray.get( array.size() -1 ).add( 1 );
}
}
}
有没有更好的方法来做到这一点?
另外,我认为并vArray.size()
没有给我行数,而是 中的列数ArrayList
,但我想要行数,那么有没有办法得到它?
我对Java有点陌生,所以我很感激任何帮助。谢谢你。