जवाबों:
String.compareTo हो सकता है या क्या आप की जरूरत नहीं हो सकता है।
यदि आपको स्ट्रिंग्स के स्थानीयकृत आदेश की आवश्यकता है, तो इस लिंक पर एक नज़र डालें ।
String#compareToIgnoreCase
String.compareToविधि पर एक नज़र डालें ।
s1.compareTo(s2)
Javadocs से:
परिणाम एक नकारात्मक पूर्णांक है यदि यह स्ट्रिंग ऑब्जेक्ट lexicographically तर्क स्ट्रिंग से पहले है। परिणाम एक धनात्मक पूर्णांक है यदि यह स्ट्रिंग ऑब्जेक्ट lexicographically तर्क स्ट्रिंग का अनुसरण करता है। परिणाम शून्य है यदि तार बराबर हैं; तुलना (वस्तु) विधि सही होने पर तुलनात्मक रूप से 0 रिटर्न देता है।
आप या तो स्ट्रिंग की तुलना विधि (java.lang.String.compareTo) कह सकते हैं। यह सुविधा जावा प्रलेखन साइट पर अच्छी तरह से प्रलेखित है ।
यहाँ एक छोटा कार्यक्रम है जो इसे प्रदर्शित करता है:
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();
}
}
यहाँ एक लाइव प्रदर्शन है जो यह दिखाता है कि यह काम करता है: http://ideone.com/Drikp3
राष्ट्रीयकरण के बाद के वर्णमाला क्रम के लिए, का उपयोग करें 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");
}
समर्थित स्थानों की सूची के लिए, JDK 8 और 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.compareTo(String)।
लेकिन अगर आप स्ट्रिंग्स की सूची को छाँट रहे हैं और आपको इसकी आवश्यकता है Comparator, तो आपको इसे लागू करने की आवश्यकता नहीं है, आप इसका उपयोग कर सकते हैं Comparator.naturalOrder()या कर सकते हैं Comparator.reverseOrder()।
String#compareToतुलनात्मक रूप से "Z" सॉर्ट करेगा। यदि आप मिश्रित-केस स्ट्रिंग को वर्णानुक्रम में बदल रहे हैं, तो आपको स्थानीय-संवेदनशील ऑर्डरिंग की आवश्यकता है। यदि स्थानीय स्तर पर स्ट्रिंग्स के स्थानीयकरण का लिंक मृत हो जाता है, तो उपयोग करने वाली चीज java.text.Collator है ।