Así de golpe se me ha ocurrido un algoritmo que te podría servir, pero no creo que sea el más óptimo.
Te transcribo la clase:
Código PHP:
import java.util.ArrayList;
import java.util.List;
public class Clase {
private static List<Integer> convertir(int[] arreglo) {
List<Integer> lista = new ArrayList<Integer>();
for (int i = 0; i < arreglo.length; i++)
lista.add(new Integer(arreglo[i]));
return lista;
}
public static boolean compara(int[] arreglo1, int[] arreglo2) {
List<Integer> lista1 = new ArrayList<Integer>(convertir(arreglo1));
List<Integer> lista2 = new ArrayList<Integer>(convertir(arreglo2));
return (lista2.containsAll(lista1) && lista1.containsAll(lista2));
}
public static void main(String[] args) {
int[] a = new int[] { 1, 2, 3, 4, 5 };
int[] b = new int[] { 3, 2, 1, 5, 4 };
System.out.println(compara(a, b));
}
}
La he desarrollado con la SDK 1.5 de Sun. Para versiones anteriores solo tendrías que quitar la generalización <Integer>. Como te podrás dar cuenta, eso se aleja un poco, por no decir que completamente, del modelo orientado a objetos. Espero que te sirva y si lo optimizas, pues hazmelo saber. :)