Arrays.sort()从我的数组中删除了很多项

Aar*_*nke 5 java arrays sorting string

在我的Java程序中,我有以下代码:

String[] states = readFile("States.txt");

System.out.println(String.join(" ", states));
System.out.println(states.length);

Arrays.sort(states);

System.out.println(String.join(" ", states));
System.out.println(states.length);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,呼吁Arrays.sort()java.util.Arrays原因很多项目从列表中删除.当我运行上面的代码时,这是输出:

FL GA SC NC VA MD NY NJ DE PA CT RI MA VT NH ME AL TN KY WV OH MI MS AR MO KS NE IN IL WI MN LA TX OK IA SD ND NM CO WY ID AZ UT NV MT CA OR WA AL HI
50
AL AL AR AZ CA CO CT DE FL GA HI
50
Run Code Online (Sandbox Code Playgroud)

关于这里发生了什么,我非常非常困惑.为什么只打印出11件商品?正在Arrays.sort()删除物品?为什么会Arrays.sort()这样?为什么阵列的大小仍然存在50?这些物品是否被清空或是什么?

我假设我的readFile()方法工作正常,因为未排序的数组打印出来很好......

public static String[] readFile(String FileName) {
    char[] cbuf = new char[200];
    String[] array;
    FileReader fr;
    try {
        fr = new FileReader(FileName);
        try {
            fr.read(cbuf);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    String all = new String(cbuf);
    array = all.split("\n");
    return array;
}
Run Code Online (Sandbox Code Playgroud)

我正在阅读的文件:https://nofile.io/f/8TO3pdnmS3W/States.txt MD5以8b961b5开头

Arj*_*Kay 3

文件末尾的换行符,特别是文件中最后一个条目“ HI”之后的换行符似乎导致了问题。可以在readFile函数中使用以下方法解决:

array = all.trim().split("\n");