Quiero comparar las dos cadenas anteriores por su orden alfabético (que en este caso "Proyecto" y luego "Sunject" como "P" viene antes de "S"). ¿Alguien sabe cómo hacer eso en Java?
Tenga en cuenta que String#compareTola comparación lexicográfica clasificará la "Z" mayúscula antes de la "a" minúscula. Si está alfabetizando cadenas de mayúsculas y minúsculas, necesita un orden sensible al entorno local. En caso de que el enlace al orden localizado de cadenas falle , lo que debe usar es java.text.Collator .
El resultado es un entero negativo si este objeto String precede lexicográficamente a la cadena de argumentos. El resultado es un entero positivo si este objeto String sigue lexicográficamente a la cadena de argumentos. El resultado es cero si las cadenas son iguales; compareTo devuelve 0 exactamente cuando el método equals (Object) devolvería verdadero.
Puede llamar al método compareTo de cualquiera de las cadenas (java.lang.String.compareTo). Esta característica está bien documentada en el sitio de documentación de Java .
Aquí hay un programa corto que lo demuestra:
classStringCompareExample{publicstaticvoid main(String args[]){String s1 ="Project";String s2 ="Sunject";
verboseCompare(s1, s2);
verboseCompare(s2, s1);
verboseCompare(s1, s1);}publicstaticvoid verboseCompare(String s1,String s2){System.out.println("Comparing \""+ s1 +"\" to \""+ s2 +"\"...");int comparisonResult = s1.compareTo(s2);System.out.println("The result of the comparison was "+ comparisonResult);System.out.print("This means that \""+ s1 +"\" ");if(comparisonResult <0){System.out.println("lexicographically precedes \""+ s2 +"\".");}elseif(comparisonResult >0){System.out.println("lexicographically follows \""+ s2 +"\".");}else{System.out.println("equals \""+ s2 +"\".");}System.out.println();}}
Para orden alfabético después de la nacionalización, utilice Collator.
//Get the Collator for US English and set its strength to PRIMARYCollator usCollator =Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);if( usCollator.compare("abc","ABC")==0){System.out.println("Strings are equivalent");}
Para obtener una lista de las configuraciones regionales admitidas, consulte Configuraciones regionales compatibles con JDK 8 y JRE 8 .
import java.io.*;import java.util.*;publicclassCandidateCode{publicstaticvoid main(String args[])throwsException{Scanner sc =newScanner(System.in);int n =Integer.parseInt(sc.nextLine());String arr[]=newString[n];for(int i =0; i < arr.length; i++){
arr[i]= sc.nextLine();}for(int i =0; i <arr.length;++i){for(int j = i +1; j <arr.length;++j){if(arr[i].compareTo(arr[j])>0){String temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;}}}for(int i =0; i <arr.length; i++){System.out.println(arr[i]);}}}
Como sugirieron otros, puede usar String.compareTo(String).
Pero si está ordenando una lista de cadenas y necesita un Comparator, no tiene que implementarlo, puede usar Comparator.naturalOrder()o Comparator.reverseOrder().
String#compareTo
la comparación lexicográfica clasificará la "Z" mayúscula antes de la "a" minúscula. Si está alfabetizando cadenas de mayúsculas y minúsculas, necesita un orden sensible al entorno local. En caso de que el enlace al orden localizado de cadenas falle , lo que debe usar es java.text.Collator .String#compareToIgnoreCase
Eche un vistazo al
String.compareTo
método.De los javadocs:
fuente
fuente
Puede llamar al método compareTo de cualquiera de las cadenas (java.lang.String.compareTo). Esta característica está bien documentada en el sitio de documentación de Java .
Aquí hay un programa corto que lo demuestra:
Aquí hay una demostración en vivo que muestra que funciona: http://ideone.com/Drikp3
fuente
Para orden alfabético después de la nacionalización, utilice
Collator
.Para obtener una lista de las configuraciones regionales admitidas, consulte Configuraciones regionales compatibles con JDK 8 y JRE 8 .
fuente
fuente
Como sugirieron otros, puede usar
String.compareTo(String)
.Pero si está ordenando una lista de cadenas y necesita un
Comparator
, no tiene que implementarlo, puede usarComparator.naturalOrder()
oComparator.reverseOrder()
.fuente