我有一个歌曲列表,我正在尝试将标题生成为一个字符串 例如
ILo<Song> slist2 = new ConsLo<Song>(this.help,
new ConsLo<Song>(this.hotelc, this.mtlos));
应该制作“帮助,加利福尼亚酒店”,但我一直得到“帮助,加州酒店” 这是我的代码
public String forCons(Song first, ILo<Song> rest) {
if(rest.equals(null)) {
return first.title;
}
return first.title + ", " + rest.accept(this);
}
其中方法接受只是在休息时重复该方法。
我也试过这个
public String forCons(Song first, ILo<Song> rest) {
ILo<Song> mt = new MtLo<Song>();
if(rest.equals(mt)) {
return first.title;
}
return first.title + ", " + rest.accept(this);
}
public <R> R accept(ILoVisitor<R, T> ilov) {
return ilov.forCons(this.first, this.rest);
}
,其中
// A visitor for the ILo<T> classes that
// and produces the result of the type R
interface ILoVisitor<R, T>
ILo表示类型为T的项目列表,ConsLo表示类型为T的项目的非空列表
答案 0 :(得分:0)
更改
if(rest.equals(null)) {
return first.title;
}
要
if(rest == null ){
return first.title;
}
答案 1 :(得分:0)
我真的不明白为列表等数据结构使用自定义类的原因是什么
如何使用标准库中的简单List<Song>
?
int size;
public static String forCons(Song first, List<Song> rest) {
size = rest.size();
if(size == 1) { // last element
return first.getTitle();
}
return first.getTitle() + ", " + forCons(rest.get(0), rest.subList(1, size));
}