Simulate a matrix. Provides method to travers vectors that compose the matrix.
/*
* Copyright 2009 Perseus Project - Tufts University <http://www.perseus.tufts.edu>
*
* This file is part of UtilPerseus.
*
* UtilPerseus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* UtilPerseus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with UtilPerseus. If not, see <http://www.gnu.org/licenses/>.
*/
//package eu.himeros.util;
import java.util.Vector;
/**
* Simulate a matrix. Provides method to travers vectors that compose the
* matrix.
*
* @author federico
*/
public class Matrix {
private Vector<Integer>[] v = null;
private final int sizeDefault = 1000;
private int dim = 2;
/**
* Default constructor.
*/
public Matrix() {
init(dim, 1000);
}
/**
* Init the matrix with dimension.
*
* @param dim
* dimension.
*/
public Matrix(int dim) {
this.dim = dim;
init(dim, 1000);
}
/**
* Constructor that init the matrix with number of dimensions and size.
*
* @param dim
* dimension.
* @param size
* size.
*/
public Matrix(int dim, int size) {
init(dim, sizeDefault);
}
/**
* Init the matrix with number of dimensions and size.
*
* @param dim
* dimension.
* @param size
* size.
*/
public void init(int dim, int size) {
v = new Vector[dim];
for (int i = 0; i < dim; i++) {
v[i] = new Vector<Integer>(size);
}
}
/**
* Add an array of integers, traversing all the vectors.
*
* @param x
* the integer array to add.
*/
public void add(int[] x) {
for (int i = 0; i < x.length; i++) {
v[i].add(x[i]);
}
}
/**
* Add integers to the first two vectors.
*
* @param x1
* integer to add to the first vector.
* @param x2
* integer to add to the second vector.
*/
public void add(int x1, int x2) {
// for bi-dimensional arrays
v[0].add(x1);
v[1].add(x2);
}
/**
* Return an int array, traversing all the vectors at the given index.
*
* @param idx
* the index.
* @return the int array.
*/
public int[] get(int idx) {
int[] res = new int[dim];
for (int i = 0; i < dim; i++) {
res[i] = v[i].get(idx);
}
return res;
}
/**
* Remove an item in all the vectors at the given index.
*
* @param idx
* the index.
*/
public void remove(int idx) {
for (int i = 0; i < dim; i++) {
v[i].remove(idx);
}
}
/**
* Get the vector array.
*
* @return the vector array.
*/
public Vector[] getVectorArray() {
return v;
}
/**
* Get size of the matrix.
*
* @return size.
*/
public int size() {
return v[0].size();
}
}
Related examples in the same category