需要帮助从ArrayList中删除已由扫描仪添加的项目

时间:2013-11-23 13:20:27

标签: java string input arraylist

我正在创建一个程序,将扫描程序中的用户输入(字符串,准确的歌曲标题)插入到arrayList中。我可以很好地插入它们但我还想创建另一个将从arrayList中删除歌曲的类。有什么方法可以删除特定歌曲或者我必须删除数组中的第一个位置吗?如果我这样做会使arrayList移位,所以位置1将变为位置0等,或者位置1保持位置1而位置0是否为空?我将歌曲添加到ArrayLists的代码:

import java.util.*;

public class addSongs {

    public static void main (String[]args){

        Scanner songAdd = new Scanner(System.in);
        Scanner addContinue = new Scanner(System.in);
        String ceaseAdd = new String();
        ceaseAdd = "Y";

        while(ceaseAdd.equals("Y")){
                System.out.println("Enter track title");
                    String newSong = songAdd.nextLine();
                        MP3_catalogue.title.add(newSong);
                System.out.println("Enter artist name");
                    String newArtist = songAdd.nextLine();
                        MP3_catalogue.artist.add(newArtist);
                System.out.println("Enter duration");
                    String newDuration = songAdd.nextLine();
                        MP3_catalogue.duration.add(newDuration);
                System.out.println("Would you like to add another song? Y/N");
            ceaseAdd = addContinue.nextLine().toUpperCase();
        }

        MP3_catalogue obj = new MP3_catalogue();
    }

}

编辑:上面的类通过使用扫描程序更改变量newSong,newArtist,newDuration,然后再次循环以将相同的变量更改为不同的输入,将歌曲添加到arrayLists。 arrayList是否保存变量的内容,即输入的特定字符串,还是仅保存变量即newSong?如果它只是保存newSong肯定会有一个填充它的相同内容的arrayList。

2 个答案:

答案 0 :(得分:1)

只需查看ArrayList Javadoc

我认为ArrayList.remove(Object)正是您所寻找的。

答案 1 :(得分:0)

ArrayList支持随机访问。所以是的,您可以删除指定的项目。请参阅Javadoc

关于你的第二个问题(稍后编辑中的问题),这是一个与Java中参数传递相关的典型问题。

newSong传递给add方法时,实际上是在传递String对象的引用。所以这与用于引用它的变量无关,即newSong。无论如何,只要循环迭代完成,newSong就会退出其范围。在下一次迭代中,变量将再次初始化,但这不会改变列表的内容。

所以,简单回答一下:它存储输入的字符串。