Hola buenas,
a veces tenemos un Vector<E> de objetos y queremos dividirlo en partes iguales y guardar esas partes en un array. Por ejemplo si queremos procesar esos objetos
en un mismo procesador/computador no necesitamos dividir el vector que los contiene, pero si trabajamos de forma concurrente o distribuída es posible que queramos dividirlo en N partes iguales
para repartir el trabajo entre máquinas.
Este código se me ha ocurrido para hacer la división en n partes iguales (la última parte puede ser mayor que las demas si la longitud del vector/N != 0)
/*
* Recibe un vector de Worker y lo divide en n vectores de Worker de manera
* que los n-1 primeros tienen (v.size()/n) componentes y último tiene las restante componentes.
*/
public static Vector<Integer>[] dividirVector(Vector<Integer> v, int n){
Vector
<Integer
> enteros
[] = new Vector[n
]; if(v.size()>=n){
int longitud = v.size()/n;
int restantes = v.size();
for(int i = 0;i<n;i++){
enteros[i] = (Vector<Integer>) new Vector<Integer>();
if(i==n-1){
for (int j=0;j<restantes;j++){
enteros[i].add(v.get(i*longitud+j));
}
}
else{
for (int j=0;j<longitud;j++){
enteros[i].add(v.get(i*longitud+j));
}
}
restantes = restantes - longitud;
}
return enteros;
}
else{
enteros[0]=(Vector<Integer>)v;
return enteros;
}
}
espero que pueda servir de ayuda, un saludo