2013-12-07 26 views
5

İki dizeyi karşılaştırıp alfabetik sıraya göre sıralamak istiyorum. Şu anda dizelerle iki dizim oluşturuyorum ve bunları iki diziyi karşılaştırarak sıralıyorum.İki dizeyi karşılaştırma ve alfabetik sıraya göre sıralama

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

Bu çalışır, ancak zaman ve bellek tüketir. Bunu yapmak için daha iyi bir yol önerebilirse memnun olurum.

+1

hedefi nedir? Daha fazla detay verebilir misiniz? –

cevap

15

İpucu: Tüm temel veri türü sınıfları java uygulamasında Comparable interface. Sadece kolay ve şık kodu kontrol edin ve preoptimize etmek istemiyorsanız

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

Eğer basit bir ascii modunda değilseniz, bu strateji doğru olmaz. Bkz. Http://stackoverflow.com/a/12927962/2087666 –

+0

Dikkat: Büyük harflerin ASCII değerleri küçük harflerden daha azdır. Eğer durumlar 1> a = "Ax" ve b = "aa" veya 2> a = "aa" ve b = "AA" gibi ise ... Sonuçlar beklenen alfabetik sıralamaya karşı bir çelişki olacaktır. Her iki dizeyi de ortak bir "CASE" 'ye dönüştürüp daha sonra karşılaştırın. – 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

bir eşitlik durumu ekleyin :) –

+0

Bitti - önbelleğe alınmış karşılaştırma. – irla

1

, java 8'de böyle yapabilirsiniz:

String[] sorted = Stream.of(a, b).sorted().toArray(String[]::new); 
System.out.println(sorted[0] + " is before " + sorted[1]); 
İlgili konular