What is wrong in my code?

package RECURSION;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class permutation {

public static void main(String[] args) {
	Scanner scn = new Scanner(System.in);
	String str = scn.nextLine();
	ArrayList<String> m=permutationprint(str, str, "");

	Collections.sort(m);
	display(m,str);

}

public static ArrayList<String> permutationprint(String str, String str1, String ans) {
	
	ArrayList<String> mr= new ArrayList<>();
	if (str.length() == 0) {
		if (ans.compareTo(str1) < 0) {
			mr.add(ans);
		}
        

	}

	for (int i = 0; i < str.length(); i++) {
		char ch = str.charAt(i);

		String ros = str.substring(0, i) + str.substring(i + 1);

		permutationprint(ros, str1, ans + ch);
	}
	return mr;

}

public static void display(ArrayList<String> m , String str){
	  for(int i=0;i<m.size();i++){
	    if(m.get(i).compareTo(str) > 0) {
	      System.out.println(m.get(i));
	    }
	  }
}

}

Hey @harsh.hj
you doing wrong
just print ArrrayList m ( M is empty )

logic is fine code galat kr rhe ho
correct code A/c to your logic

import java.util.*;

public class Main {
static ArrayList list = new ArrayList<>();

public static void main(String[] args) {
	// TODO Auto-generated method stub

	Scanner sc = new Scanner(System.in);
	String str = sc.next();
	printString(str, str, "");
	Collections.sort(list);
	for(int i=0; i<list.size(); i++) {
		System.out.println(list.get(i));
	}

}

public static void printString(String str, String str1, String ans) {
	if (str.length() == 0) {
	
		if (ans.compareTo(str1)<0)
			list.add(ans);
		return;
	}
	for (int i = 0; i < str.length(); i++) {
		char ch = str.charAt(i);
		String roq = str.substring(0, i) + str.substring(i + 1);
		printString(roq, str1, ans + ch);
	}

}

}