Відповіді:
String.compareTo може бути чи не бути тим, що вам потрібно.
Перегляньте це посилання, якщо вам потрібно локалізоване впорядкування рядків.
String#compareToIgnoreCase
Погляньте на String.compareToметод.
s1.compareTo(s2)
З javadocs:
Результат - це від'ємне ціле число, якщо цей об'єкт String лексикографічно передує рядку аргументу. Результатом є ціле число, якщо цей об'єкт String лексикографічно слідує за рядком аргументу. Результат дорівнює нулю, якщо рядки рівні; CompareTo повертає 0 саме тоді, коли метод рівняння (Object) поверне справжнє значення.
Ви можете зателефонувати до методу сравнениеTo або рядка (java.lang.String.compareTo). Ця особливість добре задокументована на сайті документації Java .
Ось коротка програма, яка це демонструє:
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порівняння лексикографічного порівняння буде сортувати капітал "Z" перед малі "а". Якщо ви використовуєте алфавітні рядки зі змішаним регістром, вам потрібне впорядкування, залежне від локального введення. Якщо посилання на локалізоване впорядкування рядків припиняється, то використовуватиметься java.text.Collator .