How can I compare two strings in java and define which of them is smaller than the other alphabetically?

Java

Java Problem Overview


I want to use the binary search algorithm to search the string which has been entered by the user in a very big sorted file. I can not compare the string which has been entered by the user with the string which has been located in the middle line of the file to continue my binary search.

For example, if the user's string is abcda and the file's string is abcza, it is obvious that the user's string is smaller than the file's string. How is it implemented in java? it will be great if you can help me with a sample code.

Java Solutions


Solution 1 - Java

You can use

str1.compareTo(str2);

If str1 is lexicographically less than str2, a negative number will be returned, 0 if equal or a positive number if str1 is greater.

E.g.,

"a".compareTo("b"); // returns a negative number, here -1
"a".compareTo("a"); // returns  0
"b".compareTo("a"); // returns a positive number, here 1
"b".compareTo(null); // throws java.lang.NullPointerException

Solution 2 - Java

If you would like to ignore case you could use the following:

String s = "yip";
String best = "yodel";
int compare = s.compareToIgnoreCase(best);
if(compare < 0){
	//-1, --> s is less than best. ( s comes alphabetically first)
}
else if(compare > 0 ){
// best comes alphabetically first.
}
else{
	// strings are equal.
}

Solution 3 - Java

Haven't you heard about the Comparable interface being implemented by String ? If no, try to use

"abcda".compareTo("abcza")

And it will output a good root for a solution to your problem.

Solution 4 - Java

String bigString = null;

        for(int i = 0; i < number; i++){
            System.out.println("... ");
            String sentence = sc.nextLine();
            if(bigString == null || sentence.compareTo(bigString) > 0) {
                bigString = sentence;
            }
        }
        System.out.println("...: " + bigString);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsylvesterView Question on Stackoverflow
Solution 1 - JavaJohan SjöbergView Answer on Stackoverflow
Solution 2 - JavaAlex SpencerView Answer on Stackoverflow
Solution 3 - JavaRiduidelView Answer on Stackoverflow
Solution 4 - JavaProgrammerView Answer on Stackoverflow