2014-12-13 108 views
2

我創建了一個存儲關於mp3的三條不同信息的程序。刪除多個ArrayList的內容

我有一個trackNum,namedurationArrayList s。

我需要從每一個使用索引編號ArrayList S的刪除內容,這裏是我做了什麼:

//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索引的內容。

回答

2

使用方法從

public void removeTrack(Integer postion){ 

public void removeTrack(int postion){ 

如果你使用的對象,它會嘗試在列表中找到對象。如果你使用原始的,它會考慮它的位置,因此刪除位置的元素。

+0

OMG謝謝你們這麼多@mureinik – IeuanW 2014-12-13 18:39:25

+0

不客氣。 – SMA 2014-12-13 18:42:04

2

Integer是一個對象,所以你會打電話List.remove(Object) - 即,刪除傳遞的。 如果要刪除索引,你應該定義position爲原始int

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

從我身邊的一些建議對您的設計

取而代之的各性能的單獨創建一個列表IE名稱,跟蹤和持續時間,您可以創建一個類,如SongInfo,然後將不同屬性保留爲類中的實例變量

您可以定義一個僅包含SongInfo類型對象的List。這樣設計會好很多

+0

謝謝,只是看到了這個抱歉。我同意,但這是我剛開始編程時的笑聲 – IeuanW 2017-08-14 13:00:05