Java 有一个奇怪的分类

Java 有一个奇怪的分类,java,android,arraylist,Java,Android,Arraylist,我有一个双数组列表,我在这里存储音乐标题 ArrayList-A Collections.sort(list, new Comparator<Data>() { @Override public int compare(Data o1, Data o2) { return o1.getAlbum().compareTo(o2.getAlbum()); // get Type String } }); 我保存了每个数据并进行了分类。它看起来不错

我有一个双数组列表,我在这里存储音乐标题

ArrayList-A

Collections.sort(list, new Comparator<Data>() {
    @Override
    public int compare(Data o1, Data o2) {
        return o1.getAlbum().compareTo(o2.getAlbum()); // get Type String
    }
});
我保存了每个数据并进行了分类。它看起来不错,但当我仔细看的时候,我发现了一个小问题

保存的歌曲“巴黎”和“巴黎之夜/纽约早晨”中有两段数据

我想正常的顺序是

巴黎

巴黎之夜/纽约早晨

所以ArrayList-A保持这个顺序

然而,ArrayList-B

巴黎之夜/纽约早晨

巴黎

按此顺序保存,因此标题和实际数据不同


大多数歌曲的标题都很好,但我不知道为什么会发生这种情况

您给出的第一个示例使用相册名称的可比性

o1.compareTo(o2);
这和

o1.getAlbumName().compareTo(o2.getAlbumName());

Collections.sort(song\u list\u data)
将使用
数据
对象本身的自然顺序,而您的自定义
比较器
,它委托给唱片集名称,将使用第二个。

您确定将数据添加到列表后正在排序,并且之后没有修改吗?所有数据在添加到数据列表后都已排序,并且没有修改。这些数据来自何处?
o1.getAlbumName().compareTo(o2.getAlbumName());