gpt4 book ai didi

Java 使用关联比较器对列表进行排序

转载 作者:行者123 更新时间:2023-11-29 07:41:30 25 4
gpt4 key购买 nike

我正在尝试根据与标准列表相对应的相关性对音乐列表进行排序。

public class Music implements Comparable<CriteriaList> {
private String genre, artist, album, titre, price, note;
// getters, setters
public int compareTo(CriteriaList list) {
boolean title, album, genre, artist, note;
title = !list.getTitle().isEmpty() && this.getTitre().equals(list.getTitle());
album = !list.getAlbum().isEmpty() && this.getAlbum().equals(list.getAlbum());
genre = !list.getGenre().isEmpty() && this.getGenre().equals(list.getGenre());
artist = !list.getArtist().isEmpty() && this.getArtist().equals(list.getArtist());
note = !list.getNote().isEmpty() && (Integer.parseInt(this.getNote()) >= Integer.parseInt(list.getNote()));
return ((title ? 1 : 0) + (album ? 1 : 0) + (genre ? 1 : 0) + (artist ? 1 : 0) + (note ? 1 : 0));
}
}

我的函数 compareTo 返回与条件列表匹配的字段数并测试输入是否为空。

public class MusicProvider extends Agent {
public List<Music> getMusicsByCL(CriteriaList list) {
ArrayList<Music> res = new ArrayList<Music>();
int[] revelanceTab = new int[res.size()];
int i = 0, revelance;
for (Music music : musicListAvailable) {
revelance = music.compareTo(list);
if (revelance > 1) {
res.add(music);
revelanceTab[++i] = revelance;
}
}
// sort res with revelanceTab
return res;
}
}

在这里,我想检索最小 revelance 为 1 的音乐,并按 revelance 对它们进行排序。我该怎么做?

最佳答案

假设您已经创建了实际计算相关性的功能,我会这样做。

创建一个简单的类来保存 Music 和计算出的相关性分数,只需传入 Criteria 并存储计算结果即可。

public class ScoredMusic {
private int relevanceScore;
public ScoredMusic(Music m) { ... }
public void calculateRelevance(Criteria criteria) { ... }
public Music getMusic() { ... }
public int getRelevanceScore() { ... }
}

然后我会对你拥有的所有 Music 实例进行评分,将它们存储在一个列表中,并执行一个非常简单的 compareTo() 实现,它只是比较每个实例之间的 relevanceScore ScoredMusic 实例。

关于Java 使用关联比较器对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678338/

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