Doubt in string sort

package arrays;

import java.util.Scanner;

public class stringsort {

public static void main(String[] args) {
	 Scanner scn=new Scanner(System.in);
	 int n=scn.nextInt();
	 String[] str=new String[n];
	 for (int i=0;i<str.length;i++) {
		 str[i]=scn.next();
		
		 
	 }
	 for (int i=0;i<str.length;i++) {
		 for(int j=i+1;j<str.length-1;j++) {
		 if(str[i].compareTo(str[j])>0) {
			 String temp = str[i];
             str[i] = str[j];
             str[j] = temp;
		 }
		 
		 
	 }
	 }
	 for (int i=0;i<str.length;i++) {
		 System.out.println(str[i]);
	 }
	 

}

}

Hey @harsh.hj
if a string is present completely as a prefix in another string, then string with longer length should come first. Eg bat, batman are 2 strings and the string bat is present as a prefix in Batman then sorted order should have - Batman, bat.
String s1 = “bat”;
String s2 = “batman”;
System.out.println(s1.compareTo(s2));// output -3; But swapping is possible
compareTo kuch aisa hona chahiye
public static int compareTo(String s1, String s2) {

	int i = 0;

	while (i < s1.length() && i < s2.length()) {

		if (s1.charAt(i) > s2.charAt(i)) {

			return 1;
		} else if (s1.charAt(i) < s2.charAt(i)) {
			return -1;
		}
		i++;

	}

	if (s1.length() > s2.length()) {
		return -1;
	} else {
		return 1;
	}

}