删除多个 ArrayList 的内容

Posted

技术标签:

【中文标题】删除多个 ArrayList 的内容【英文标题】:Deleting content of multiple ArrayLists 【发布时间】:2015-02-12 06:10:24 【问题描述】:

我创建了一个程序,用于存储关于 mp3 的三种不同信息。

我有一个trackNumnamedurationArrayLists。

我需要使用索引号从每个ArrayLists 中删除内容,这是我所做的:

    //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 的索引内容吗?

【问题讨论】:

【参考方案1】:

使用方法来自

public void removeTrack(Integer postion)

public void removeTrack(int postion)

如果您使用对象,它将尝试在列表中查找对象。如果您使用原语,它会将其视为位置并因此删除该位置的元素。

【讨论】:

【参考方案2】:

Integer 是一个对象,因此您将调用 List.remove(Object) - 即删除传递的 。 如果要删除索引,应将position 定义为原语int

public void removeTrack(int postion)
    trackNum.remove(postion);
    name.remove(postion);
    duration.remove(postion);

【讨论】:

【参考方案3】:

我对你的设计的一些建议

您可以只创建一个类,比如 SongInfo,然后将不同的属性作为实例变量保存在类中,而不是为每个属性(即名称、音轨和持续时间)单独创建一个列表

您可以定义一个仅包含 SongInfo 类型的对象的列表。这样设计会好很多

【讨论】:

谢谢,才看到这个抱歉。不过我同意,这是我刚开始编程的时候,哈哈

以上是关于删除多个 ArrayList 的内容的主要内容,如果未能解决你的问题,请参考以下文章

使用 For 循环从 ArrayList 中删除数据

ArrayList类

ArrayList

Arraylis类

源码面经Java源码系列-ArrayList与LinkedList

ArrayList && LinkList