【发布时间】:2021-10-15 12:52:06
【问题描述】:
我有下一堂课。
public class Track{
private int id;
private String trackName;
private String artistName;
private String albumName;
private int amountMembers;
private int duration; //segs
private String category;
private int albumYear;
private boolean isSolist; //1 yes, 0 no
}
我的列表中有很多 Track,我想按两个要求过滤曲目:
- 如果类别等于“摇滚”
- 如果曲目属于少于 9 首曲目的专辑
首先很简单,我目前在列表中的曲目按“摇滚”类别过滤,但我无法想象如何执行过滤并返回专辑中少于 9 首曲目的功能歌曲。任何解决方案?我正在使用 Java,我可以使用 Streams 还是 Lambdas?重要提示:我的数据库中有一个完整的曲目列表。
【问题讨论】:
-
提示:您的要求提到了曲目和专辑。所以问题是:相册的数据模型是什么样的?或者您只是有一个“数据库”中所有曲目的平面列表?换句话说:也许您应该退后一步,重新设计您的模型,并以专辑为基础?就像例子一样。无论如何,我们可能无法帮助您,因为如前所述:我们不了解所有相关方面。请与我们分享!
-
嗨!我有你提到的所有曲目的平面列表。
-
那我强烈建议你至少引入一个 Album 类。因为当您需要订购/比较东西时,您真的希望能够说
this.album.equals(that.album)。因为否则,您将进入比较多个字段(如专辑名称、年份等)的业务……如果您想真实的话。当然,这取决于你想去的现实程度。但是想一想:同一年的“同一张”专辑可能有 2、3 个版本也不是太不现实。 -
我会试试的,谢谢你的时间!