【问题标题】:Collections.sort is not sorting dataCollections.sort 不对数据进行排序
【发布时间】:2016-08-24 17:27:25
【问题描述】:

我有一个名为 Song 的自定义类,就像这样-

public class Song implements Parcelable {
private String mTitle;
private String mArtist;
private long mID;
private long albumID;

public Song(long id,String title, String artist,long albumId)
{
    this.mID=id;
    this.mTitle=title;
    this.mArtist=artist;
    this.albumID=albumId;
}

public long getAlbumID() {
    return albumID;
}

public void setAlbumID(long albumID) {
    this.albumID = albumID;
}

public long getID()
{
    return mID;
}

public String getArtist() {
    return mArtist;
}

public String getTitle() {
    return mTitle;
}

public void setID(long mID) {
    this.mID = mID;
}

public void setTitle(String mTitle) {
    this.mTitle=mTitle;
}

public void setArtist(String mArtist) {
    this.mArtist = mArtist;
}


@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(mTitle);
    parcel.writeString(mArtist);
    parcel.writeLong(mID);
    parcel.writeLong(albumID);
}

public static final Parcelable.Creator CREATOR=new Parcelable.Creator()
{
    public Song createFromParcel(Parcel in)
    {
        return new Song(in);
    }

    public Song[] newArray(int size)
    {
        return new Song[size];
    }
};
public Song(Parcel in)
{
    mTitle=in.readString();
    mArtist=in.readString();
    mID=in.readLong();
    albumID=in.readLong();

  }


}

还有一个ArrayList<Song>

我想按字母顺序对数据进行排序。我正在使用-

Collections.sort(songList, new Comparator<Song>() {
        @Override
        public int compare(Song a, Song b) {
            return  (a.getTitle().compareToIgnoreCase(b.getTitle()));
        }
    });

但是,我的数据仍然没有排序。该列表以一首以“h”开头的歌曲开头,然后是一首以“o”开头的歌曲,然后是一首以“s”开头的歌曲。

【问题讨论】:

  • 该列表以一首以“h”开头的歌曲开头,然后是一首以“o”开头的歌曲,然后是一首以“s”开头的歌曲。 -- 那么,它已经排序了吗?
  • @AntonMalyshev 抱歉,我没有提到“s”后面有 4 个“a”
  • 不可能使用正确的数据... Prolly 您在使用集合后进行排序...还要记住“s”在“a”之前

标签: android sorting arraylist


【解决方案1】:

发现问题。我在Thread 中获取songList 并将其排序到线程之外。因此,它在线程完成获取数据之前对数据进行了排序。将排序部分移到 Thread 内,它起作用了。

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 2018-05-10
    • 2019-05-03
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多