Dividir un Vector<objetoQueQuieras> en un array de vectores de n componentes

Iniciado por rixi15, 1 Noviembre 2012, 20:35 PM

0 Miembros y 1 Visitante están viendo este tema.

rixi15

Código (java) [Seleccionar]
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)


Código (java) [Seleccionar]
/*
* 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

sapito169

muy buen aporte felicitaciones pero te recomiendo que lo pongas en con etiquetas de codigo

rixi15

gracias por el comentario, ya he corredigo los colores, no me habia dado cuenta gracias