Je veux comparer deux chaînes et les trier dans l'ordre alphabétique. Je crée actuellement deux tableaux avec les chaînes et je les trie en comparant les deux tableaux.
String a="LetterA";
String b="ALetterB";
String[] array1={a.toLowerCase(),b.toLowerCase()};
String[] array2={a.toLowerCase(),b.toLowerCase()};
Arrays.sort(array2);
if (Arrays.equals(array1, array2)){
System.out.println(a+" is before "+b);
}
else{
System.out.println(b+" is before "+a);
}
Cela fonctionne mais cela prend du temps et de la mémoire. Je vous serais reconnaissant si quelqu'un peut suggérer une meilleure façon de faire cela.
Conseil : toutes les classes de types de données de base en Java implémentent Interface comparable .
String a="LetterA";
String b="ALetterB";
int compare = a.compareTo(b);
if (compare < 0){
System.out.println(a+" is before "+b);
}
else if (compare > 0) {
System.out.println(b+" is before "+a);
}
else {
System.out.println(b+" is same as "+a);
}
int compare = a.compareTo(b);
if (compare < 0){
System.out.println(a + " is before " +b);
} else if (compare > 0) {
System.out.println(b + " is before " +a);
} else {
System.out.println("Strings are equal")
}
Si vous recherchez simplement un code simple et élégant et que vous ne voulez pas préoptimiser, vous pouvez utiliser Java 8 comme ceci:
String[] sorted = Stream.of(a, b).sorted().toArray(String[]::new);
System.out.println(sorted[0] + " is before " + sorted[1]);
Voici le code du problème.
public static void main(String[] args) {
String a="Angram";
String b="Angram";
if(a.length()==b.length()) {
char c[]=a.toCharArray();
char d[]=b.toCharArray();
Arrays.sort(c);
Arrays.sort(d);
a=new String(c);
b=new String(d);
if(a.equals(b))
System.out.print("Yes");
else
System.out.print("No");
}
else {
System.out.print("No");
}
}