public double[] getColumn(int column) {
        checkIndices(0, column);
        rowReadLock.lock();
        double[] values = new double[rows.get()];
        for (int row = 0; row < rows.get(); ++row)
            values[row] = get(row, column);
        rowReadLock.unlock();
        return values;
    }
public double [ ] getColumn ( int column ) { checkIndices ( 0 , column ) ; rowReadLock . lock ( ) ; double [ ] values = new double [ rows . get ( ) ] ; for ( int row = 0 ; row < rows . get ( ) ; ++ row ) values [ row ] = get ( row , column ) ; rowReadLock . unlock ( ) ; return values ; }
{@inheritDoc} The length of the returned column reflects the size of
matrix at the time of the call, which may be different from earlier calls
to {@link #rows()}