¿Pueden los elementos del String [] estar en diferentes órdenes y aún así hacer que toda la matriz se considere igual a otra matriz que contenga los mismos elementos en otro orden? En caso afirmativo, sería mejor implementar una clase de contenedor e ignorar equals y hashcode.
si no, y si el almacenamiento de los elementos internos como listas en lugar de matrices es una alternativa aceptable, entonces se podría hacer esto:
package com.stackoverflow;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class StringContainment {
public static void main(final String[] args) {
final Set<String[]> s = new HashSet<String[]>();
final Set<List<String>> s2 = new HashSet<List<String>>();
s.add(new String[] {"lucy", "simon"});
s2.add(Arrays.asList(new String[] { "lucy", "simon" }));
System.out.println(s.contains(new String[] {"lucy", "simon"})); // false
System.out.println(s2.contains(Arrays.asList(new String[] {"lucy", "simon"}))); // true
}
}
El primer cheque falso de vuelta, la segunda verdad. Podría ser más fácil si puedes usar listas.
Si no puede, aún puede usar esto siempre que no tenga que hacer esta comparación con demasiada frecuencia (definitivamente no es una buena idea para el rendimiento).
+1 para la profundidad es igual a la explicación – Barthelemy