Código
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
/* * 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){ 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