2013-12-07 5 views
5

Я хочу сравнить две строки и отсортировать их по алфавиту. В настоящее время я создаю два массива со строками и сортируя их по сравнению с двумя массивами.Сравнение двух строк и их сортировка в алфавитном порядке

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); 
} 

Это работает, но это время и память. Я был бы признателен, если бы кто-нибудь мог предложить лучший способ сделать это.

+1

какова цель? Не могли бы вы подробнее рассказать? –

ответ

15

Подсказка: Все классы базового типа данных в java-инструменте Comparable interface.

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); 
} 
+2

Если вы не в обычном режиме ascii, эта стратегия не будет wokr вправо. См. Http://stackoverflow.com/a/12927962/2087666 –

+0

Внимание: Значения заглавных букв ASCII меньше, чем значения маленьких букв. Если случаи похожи на 1> a = "Ax" и b = "aa" или 2> a = "aa" и b = "AA" ... Результаты будут противоречить ожидаемой алфавитной сортировке. Лучше конвертируйте обе строки в общий «CASE», а затем сравните. – Deepeshkumar

1
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") 
} 
+0

добавьте случай равенства тоже :) –

+0

Выполнено - также кэшированное сравнение. – irla

1

Если вы просто ищете простой и элегантный код, и вы не хотите preoptimize, в Java 8 вы можете сделать так:

String[] sorted = Stream.of(a, b).sorted().toArray(String[]::new); 
System.out.println(sorted[0] + " is before " + sorted[1]); 
Смежные вопросы