Ordenar un Vector de manera aleatoria en j2me

Soy un gran fan de Java. Está claro que no es el lenguaje que mejor rendimiento da, pero la portabilidad, la estructura del lenguaje en sí y las herramientas disponibles (viva Eclipse!) hacen que disfrute programando en Java.

Últimamente estoy haciendo cositas de programación para mi Nokia, que corre un S40 y tiene Java Micro Edition. Me costó un poco al principio hacerme a los elementos de interfaz gráfica, pero ahora que ya lo domino más, puedo empezar a meterle funcionalidades chulas a los programas.

El caso es que necesitaba ordenar de manera aleatoria un Vector. En Java SE es inmediato con el método Collections.shuffle(Vector), pero en j2me no lo tenemos. Buscando un poco encontré un par de enlaces donde proponían soluciones, pero como no me gustaban sus implementaciones, pues al final cogí el código fuente del método Collections.shuffle y lo he adaptado para j2me.

Por si a alguien le resulta útil, aquí lo tenéis:

public static void shuffle(Vector v){
  Random random = new Random(System.currentTimeMillis());
  Object[] array = new Object[v.size()];
  for(int i = 0; i < v.size(); i++){
    array[i] = v.elementAt(i);
  }

  int index;
  Object temp;
  for(int i = array.length - 1; i > 0; i--){
    index = random.nextInt(i + 1);
    temp = array[i];
    array[i] = array[index];
    array[index] = temp;
  }

  for(int i = 0; i < v.size(); i++){
    v.setElementAt(array[i], i);
  }
}

Publicado por Carlos Llongo el

Archivado en programación