我试图按照标准列表对应的revelance对音乐列表进行排序。Java用revelance比较器排序列表
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排序他们。我怎样才能做到这一点 ?
不错!我会试试这个! Thx :) – melkir
我可以为每个字段添加null!= criteria.getTitle()&&!criteria.getTitle()。isEmpty()以保护我的函数免受空指针exc影响。 – melkir
另一个选择是导入一个StringUtils类。他们通常会提供一个isEmpty或isBlank方法,您可以将其传递给您的字段。根据您想要如何处理空值和空白字符串(如果您想以不同的方式处理它们),有很多选项可供选择。导入这些软件包需要一些开销,但它们提供了许多有用的功能。 Apache Commons和Google Guava是这些类型辅助函数的好起点。 – BamaPookie