我試圖按照標準列表對應的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