Réponses:
String.compareTo pourrait ou non être ce dont vous avez besoin.
Jetez un œil à ce lien si vous avez besoin d'un ordre localisé des chaînes.
String#compareToIgnoreCase
Jetez un œil à la String.compareTométhode.
s1.compareTo(s2)
À partir des javadocs:
Le résultat est un entier négatif si cet objet String précède lexicographiquement la chaîne d'argument. Le résultat est un entier positif si cet objet String suit lexicographiquement la chaîne d'argument. Le résultat est zéro si les chaînes sont égales; compareTo renvoie 0 exactement lorsque la méthode equals (Object) renvoie true.
Vous pouvez appeler la méthode compareTo de l'une ou l'autre des chaînes (java.lang.String.compareTo). Cette fonctionnalité est bien documentée sur le site de documentation java .
Voici un petit programme qui le démontre:
class StringCompareExample {
public static void main(String args[]){
String s1 = "Project"; String s2 = "Sunject";
verboseCompare(s1, s2);
verboseCompare(s2, s1);
verboseCompare(s1, s1);
}
public static void 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 + "\".");
}else if(comparisonResult > 0){
System.out.println("lexicographically follows \"" + s2 + "\".");
}else{
System.out.println("equals \"" + s2 + "\".");
}
System.out.println();
}
}
Voici une démonstration en direct qui montre que cela fonctionne: http://ideone.com/Drikp3
Pour l'ordre alphabétique après la nationalisation, utilisez Collator.
//Get the Collator for US English and set its strength to PRIMARY
Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
if( usCollator.compare("abc", "ABC") == 0 ) {
System.out.println("Strings are equivalent");
}
Pour une liste des paramètres régionaux pris en charge, consultez Paramètres régionaux pris en charge par JDK 8 et JRE 8 .
import java.io.*;
import java.util.*;
public class CandidateCode {
public static void main(String args[] ) throws Exception {
Scanner sc = new Scanner(System.in);
int n =Integer.parseInt(sc.nextLine());
String arr[] = new String[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]);
}
}
}
String#compareTola comparaison lexicographique de s triera les majuscules "Z" avant les minuscules "a". Si vous classez par ordre alphabétique des chaînes à casse mixte, vous avez besoin d'un ordre sensible aux paramètres régionaux. Au cas où le lien vers l'ordre localisé des chaînes disparaît, la chose à utiliser est java.text.Collator .