我创建了一个程序,存储有关mp3的三个不同信息。
我有trackNum
,name
和duration
ArrayList
。
我需要使用索引号从每个ArrayList
中删除内容,这是我所做的:
//This is my method
public void removeTrack(Integer postion){
trackNum.remove(postion);
name.remove(postion);
duration.remove(postion);
}
//This is me using the method
case 2:
meth.print();
System.out.println("Please enter the index of the track you want to remove:");
meth.removeTrack(in.nextInt());
break;
我遇到的问题是,它没有删除每个数组列表的索引,例如:
输入:
index trackNum name duration
0 111 1 1
1 2 2 2
2 3 3 3
3 4 4 4
如果我输入2,则删除每个数组列表的索引2。
输出:
index trackNum name duration
0 111 1 1
1 3 2 2
2 4 3 3
如果我输入111则会删除111
有人可以帮我删除每个ArrayList
的索引内容。
答案 0 :(得分:2)
使用
中的方法public void removeTrack(Integer postion){
要
public void removeTrack(int postion){
如果使用object,它将尝试在列表中查找对象。如果使用原语,它会将其视为位置,从而删除位置处的元素。
答案 1 :(得分:2)
Integer
是一个对象,因此您将调用List.remove(Object)
- 即删除传递的值。
如果要删除索引,则应将position
定义为基元int
:
public void removeTrack(int postion){
trackNum.remove(postion);
name.remove(postion);
duration.remove(postion);
}
答案 2 :(得分:1)
我方面有关您设计的一些建议
不是为每个属性分别创建一个List,即Name,Track和Duration,你可以创建一个类说SongInfo,然后将不同的属性保存为类中的Instance变量
您可以定义仅包含SongInfo类型的对象的List。这种方式设计会好很多