请问一下各位为什么我的排序没反应啊

问题遇到的现象和发生背景

把数据存到了集合中,本来想利用Collections.sort方法的,按照字典格式排序,但不知道为什么,排序一直失败

问题相关代码,请勿粘贴截图
import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i = 1 ;i <= 100000;i ++){
            long sum =0;
            int len = String.valueOf(i).length();
            int a [] = new int[len];
            String si = String.valueOf(i);
            for(int j = 0;j < len;j++)
                a[j] = si.charAt(j)-'0';
            for(int j = 0;j < len;j ++){
                long count = 1;
                for(int k = 1;k <= a[j];k++)
                    count *= k;
                sum += count;
            }
            if(sum == i)
                list.add(i);

        }
        Collections.sort(list);
        for(int i : list)
            System.out.print(i+" ");
    }
}


运行结果及报错内容

1 2 145 40585

我想要达到的结果

1 145 2 40585

因为是int类型,所以采用的是值比较。

import java.util.*;
public class Main {
public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        for(int i = 1 ;i <= 100000;i ++){
            long sum =0;
            int len = String.valueOf(i).length();
            int a [] = new int[len];
            String si = String.valueOf(i);
            for(int j = 0;j < len;j++)
                a[j] = si.charAt(j)-'0';
            for(int j = 0;j < len;j ++){
                long count = 1;
                for(int k = 1;k <= a[j];k++)
                    count *= k;
                sum += count;
            }
            if(sum == i)
                list.add(i+"");

        }
        Collections.sort(list);
        for(String i : list)
            System.out.print(i+" ");
    }
}