我有ArrayList的问题.我正在使用像这样的ArrayList:
private ArrayList<Playlist> mPlaylists;
Run Code Online (Sandbox Code Playgroud)
其中播放列表是从另一个ArrayList继承的类.我做以下事情:
p = new Playlist(...some parameters...);
mPlaylists.add(p);
Run Code Online (Sandbox Code Playgroud)
后来,当我使用'p'来获取列表中的索引时:
int index = mPlaylists.indexOf(p);
Run Code Online (Sandbox Code Playgroud)
即使检查列表清楚地显示它的索引为'4',也会返回索引'1'.
有人知道为什么会失败吗?谢谢.
BR Morten
编辑: 没有indexOf()的相同问题,使用equals():
private int GetIndex(Playlist playlist) {
for (int i = 0; i < mPlaylists.size(); i++) {
if (mPlaylists.get(i).equals(playlist)) {
return i;
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
新编辑: 这个工作!:
private int getIndex(Playlist playlist) {
for (int i = 0; i < mPlaylists.size(); i++) {
if (mPlaylists.get(i) == playlist) {
return i;
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
解决方案: 正如建议的那样,我将Playlist类更改为不从ArrayList启用,而是将私有实例保留.事实证明,我只需要实现4个ArrayList方法.
这样做的伎俩; 现在indexOf()返回正确的对象! …