gpt4 book ai didi

java - 对列表中的重复项进行排序

转载 作者:行者123 更新时间:2023-11-30 05:09:14 24 4
gpt4 key购买 nike

我正在尝试从列表中排序。

例如:

专辑艺术家 X(年份),专辑艺术家 Y (2000),专辑艺术家 Y (1971),专辑艺术家 Y (1980),专辑艺人Z(年)

我想按年份对专辑艺术家 Y 进行排序,而不改变其在 X 和 Z 之间的位置

专辑艺术家 X(年份),专辑艺术家 Y (1971),专辑艺术家 Y (1980),专辑艺术家 Y (2000),专辑艺人Z(年)

我当前的代码:

public class AlbumListLoader extends BaseLoader<List<? extends Item>> implements MPDConfig {

private Artist mArtist = null;
private List<? extends Item> mItems = null;

public AlbumListLoader(Context context) {
super(context);
}

public AlbumListLoader(Context context, Artist artist) {
super(context);
mArtist = artist;
}

@SuppressWarnings("unchecked")
@Override
public List<? extends Item> loadInBackground() {

final String tri = mSettings.getString("tri", "az");

try {

mItems = MPDApplication.getInstance().oMPDAsyncHelper.oMPD.getAlbums(mArtist);

if (tri.equals("year")) {
Collections.sort((List<? extends Album>) mItems, Album.SORT_BY_YEAR_DSC);
} else if (tri.equals("artist")) {

if (mArtist == null) {
Collections.sort((List<? extends Album>) mItems, Album.SORT_BY_ARTIST);

// Here, I want to sort Album + by date

}
}

} catch (final IOException | MPDException ignore) {
Log.w("AlbumListLoader", "Failed to update.");
}

return mItems;
}

我的相册排序:

public static final Comparator<AbstractAlbum> SORT_BY_ARTIST = new Comparator<AbstractAlbum>() {

@Override
public int compare(final AbstractAlbum lhn, final AbstractAlbum rhn) {

final String leftArtist = lhn.mArtist;
final String rightArtist = rhn.mArtist;

return leftArtist.compareToIgnoreCase(rightArtist);
}
};

我不知道该怎么做,一个想法?

编辑:已解决

if (leftArtist.equalsIgnoreCase(rightArtist)) {

int compare = 0;
final int leftYear = formattedYear(lhn.mYear);
final int rightYear = formattedYear(rhn.mYear);

if (leftYear < rightYear) {
compare = -1;
} else if (leftYear > rightYear) {
compare = 1;
}

if (compare == 0) {
compare = lhn.compareTo(rhn);
}

return compare;

} else {

return leftArtist.compareToIgnoreCase(rightArtist);
}

最佳答案

如果你想从相册中删除重复的条目,那么你可以使用 java SetHashSet,如下所示

Set<List<? extends Album> testList = new HashSet<List<? extends Album>(mItems);

这将从您的 mItems 列表中删除重复条目。现在您可以在您的 ArrayList 中添加重复的删除列表“testList”,如下所示

yourList.addAll(testList);

现在您可以根据需要过滤列表。我希望它对你有用。

关于java - 对列表中的重复项进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com