Я хочу сравнить две приведенные выше строки по их алфавитному порядку (в данном случае «Project», затем «Sunject», поскольку «P» стоит перед «S»). Кто-нибудь знает, как это сделать на Java?
Обратите внимание, что при String#compareToлексикографическом сравнении заглавная буква «Z» будет сортироваться перед строчной буквой «а». Если вы располагаете строки в смешанном регистре по алфавиту, вам потребуется упорядочение с учетом языковых стандартов. В случае, если ссылка на локализованное упорядочивание строк не работает, следует использовать java.text.Collator .
Маркеры дуэлей
41
Вы также можете использоватьString#compareToIgnoreCase
Результатом является отрицательное целое число, если этот объект String лексикографически предшествует строке аргумента. Результатом является положительное целое число, если этот объект String лексикографически следует за строкой аргумента. Результат равен нулю, если строки равны; compareTo возвращает 0 именно тогда, когда метод equals (Object) возвращает true.
Для алфавитного порядка после национализации используйте Collator.
//Get the Collator for US English and set its strength to PRIMARYCollator 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.*;publicclassCandidateCode{publicstaticvoid main(String args[])throwsException{Scanner sc =newScanner(System.in);int n =Integer.parseInt(sc.nextLine());String arr[]=newString[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 .String#compareToIgnoreCase
Взгляните на
String.compareTo
метод.Из javadocs:
источник
источник
Вы можете вызвать метод compareTo любой строки (java.lang.String.compareTo). Эта функция хорошо документирована на сайте документации Java .
Вот короткая программа, демонстрирующая это:
Вот живая демонстрация, которая показывает, как это работает: http://ideone.com/Drikp3
источник
Для алфавитного порядка после национализации используйте
Collator
.Список поддерживаемых локалей см. В разделе Поддерживаемые локали JDK 8 и JRE 8 .
источник
источник
Как предлагали другие, вы можете использовать
String.compareTo(String)
.Но если вы сортируете список строк и вам нужен
Comparator
, вам не нужно его реализовывать, вы можете использоватьComparator.naturalOrder()
илиComparator.reverseOrder()
.источник