valores una posiciones matriz elementos con comparar como cadena arreglo array java string-comparison lexicographic lexicographic-ordering

una - Comparación de cadenas en Java



comparar un string con un arreglo java (6)

¿Qué significa "comparar dos cuerdas lexicográficamente"?


A partir de las respuestas de @Bozho y @aioobe, las comparaciones lexicográficas son similares al orden que uno podría encontrar en un diccionario.

La clase Java String proporciona el método .compareTo () para comparar secuencias lexicográficamente. Se usa como esta "apple".compareTo ("banana") .

El retorno de este método es un int que se puede interpretar de la siguiente manera:

  • devuelve <0, entonces la cadena que llama al método es lexicográficamente la primera (aparece primero en el diccionario)
  • devuelve == 0 entonces las dos cadenas son lexicográficamente equivalentes
  • devuelve> 0, entonces el parámetro pasado al método compareTo es lexicográficamente el primero.

Más específicamente, el método proporciona la primera diferencia distinta de cero en valores ASCII.

Por lo tanto, "computer".compareTo ("comparison") devolverá un valor de (int) ''u'' - (int) ''a'' (21). Como este es un resultado positivo, el parámetro ( "comparison" ) es lexicográficamente el primero.

También hay una variante .compareToIgnoreCase () que devolverá 0 para "a".compareToIgnoreCase ("A"); por ejemplo.


Comparando secuencialmente las letras que tienen la misma posición entre sí ... más como la forma de ordenar las palabras en un diccionario


El String.compareTo(..) realiza una comparación lexicográfica. Lexicográficamente == alphebetically.


La frase "comparación" es levemente engañosa. No está comparando para la igualdad estricta, pero para qué cuerda es lo primero en el diccionario (léxico).

Esta es la característica que permite agrupar colecciones de cadenas.

Tenga en cuenta que esto es muy dependiente de la configuración regional activa. Por ejemplo, aquí en Dinamarca tenemos un carácter "å" que solía escribirse como "aa" y es muy distinto de dos a singles (EDIT: ¡si se pronuncia como "å"!). Por lo tanto, las reglas de ordenación danesas tratan dos a consecutivas idénticamente a una "å", lo que significa que va después de z. Esto también significa que los diccionarios daneses se ordenan de forma diferente a los ingleses o suecos.


Orden lexicográfico de Java:

  1. Números -antes-
  2. Mayúsculas -antes-
  3. Minúsculo

Por extraño que parezca, es cierto ...
Tuve que escribir cadenas de comparación para poder cambiar el comportamiento predeterminado.
Juegue con el siguiente fragmento con mejores ejemplos de cadenas de entrada para verificar el orden (necesitará JSE 8):

import java.util.ArrayList; public class HelloLambda { public static void main(String[] args) { ArrayList<String> names = new ArrayList<>(); names.add("Kambiz"); names.add("kambiz"); names.add("k1ambiz"); names.add("1Bmbiza"); names.add("Samantha"); names.add("Jakey"); names.add("Lesley"); names.add("Hayley"); names.add("Benjamin"); names.add("Anthony"); names.stream(). filter(e -> e.contains("a")). sorted(). forEach(System.out::println); } }

Resultado

1Bmbiza
Benjamín
Hayley
Jakey
Kambiz
Samantha
k1ambiz
kambiz

Tenga en cuenta que esta es una respuesta específica de la configuración regional.
Tenga en cuenta que estoy filtrando un nombre que contiene la letra minúscula a.


Si compruebas qué cadena pasaría primero en un léxico, ¡has hecho una comparación lexicográfica de las cadenas!

Algunos enlaces:

Robado del último enlace:

Una cadena s precede a una cadena t en orden lexicográfico si

  • s es un prefijo de t , o
  • si cyd son respectivamente el primer carácter de syt en el cual s y t difieren, entonces c precede a d en el orden de los caracteres.

Nota: Para los caracteres que son letras alfabéticas, el orden de los caracteres coincide con el orden alfabético. Los dígitos preceden a las letras, y las letras mayúsculas preceden a las minúsculas.

Ejemplo:

  • la casa precede al hogar
  • El hogar precede a la casa
  • compositor precede a la computadora
  • H2O precede al HOTEL