De nuevo, no necesita el comparador para Arrays.binarySearch(Object[] a, Object key)
, siempre y cuando los tipos de objetos sean comparables, pero con las expresiones lambda esto es mucho más fácil.
Sólo tiene que sustituir el comparador con la referencia al método: String::compareTo
Ej:
Arrays.binarySearch(someStringArray, "The String to find.", String::compareTo);
También es posible usar
Arrays.binarySearch(someStringArray, "The String to find.", (a,b) -> a.compareTo(b));
pero incluso antes de lambdas, siempre hubo clases anónimas:
Arrays.binarySearch(
someStringArray,
"The String to find.",
new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
+1 para los implementos Comparador –
'Comparador' es un tipo genérico, por lo que' ExampleComparator' probablemente debería implementar 'Comparador' para evitar advertencias. –
theisenp
Para el comparador de cuerdas, tenga en cuenta la cadena en minúsculas (o mayúsculas) antes de compararlas; de lo contrario, debería obtener esta orden A-Za-z –