/** * Returns the column vector, locking the data if {@code shouldLock} is * {@code true}. */ private SparseDoubleVector getColumnVector(int column, boolean shouldLock) { int r = rows.get(); if (shouldLock) lockColumn(column, r); // Ensure that the column data is up to date while (lastVectorCacheUpdate.get() != modifications.get()) updateVectorCache(); int[] rowArr = colToRowsCache[column]; SparseDoubleVector colVec = new SparseHashDoubleVector(r); for (int row : rowArr) colVec.set(row, matrixEntries.get(new Entry(row, column))); if (shouldLock) unlockColumn(column, r); return colVec; }
/** * Returns the row vector, locking the data if {@code shouldLock} is {@code * true}. */ private SparseDoubleVector getRowVector(int row, boolean shouldLock) { int c = cols.get(); if (shouldLock) lockRow(row, c); // Ensure that the column data is up to date while (lastVectorCacheUpdate.get() != modifications.get()) updateVectorCache(); int[] colArr = rowToColsCache[row]; SparseDoubleVector rowVec = new SparseHashDoubleVector(c); for (int column : colArr) rowVec.set(column, matrixEntries.get(new Entry(row, column))); if (shouldLock) unlockRow(row, c); return rowVec; }
/** * Returns the row vector, locking the data if {@code shouldLock} is {@code * true}. */ private SparseDoubleVector getRowVector(int row, boolean shouldLock) { int c = cols.get(); if (shouldLock) lockRow(row, c); // Ensure that the column data is up to date while (lastVectorCacheUpdate.get() != modifications.get()) updateVectorCache(); int[] colArr = rowToColsCache[row]; SparseDoubleVector rowVec = new SparseHashDoubleVector(c); for (int column : colArr) rowVec.set(column, matrixEntries.get(new Entry(row, column))); if (shouldLock) unlockRow(row, c); return rowVec; }
/** * Returns the column vector, locking the data if {@code shouldLock} is * {@code true}. */ private SparseDoubleVector getColumnVector(int column, boolean shouldLock) { int r = rows.get(); if (shouldLock) lockColumn(column, r); // Ensure that the column data is up to date while (lastVectorCacheUpdate.get() != modifications.get()) updateVectorCache(); int[] rowArr = colToRowsCache[column]; SparseDoubleVector colVec = new SparseHashDoubleVector(r); for (int row : rowArr) colVec.set(row, matrixEntries.get(new Entry(row, column))); if (shouldLock) unlockColumn(column, r); return colVec; }