簡體   English   中英

刪除ArrayList的最后一個元素

[英]Removing the last element of an ArrayList

我是Java的新手,我堅持進行了一個多星期以來一直嘗試解決的練習,但我不知道自己做錯了什么。

我需要刪除ArrayList的最后一個元素,在這種情況下為整數。

問題是,當我運行測試時,它仍然返回舊值。

public static void removeLastOccurrence(int x, ArrayList<Integer> list) {
    if (list != null && !list.isEmpty()) {
       list.remove(list.size()-1);
    }
}

我也嘗試使用list.remove(list.lastIndexOf(x));

但是當我運行此測試時,它仍然返回相同的列表。

public class UTest{
    @Test
    public void testMultipleLast() {
        ArrayList<Integer> input = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9,1));
        ArrayList<Integer> result = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9));
        Solution.removeLastOccurence(1, input);
        assertEquals(result, input);
    }
}

如果有人可以幫助我告訴我我所缺少的東西,那會很好,因為我感到我只是想念一小部分拼圖而感到沮喪。

您的測試應如下所示。 在原始文章中的測試代碼中,您實際上並沒有在調用要測試的方法。

public class UTest
{
  @Test
  public void testMultipleLast() {
     ArrayList<Integer> input = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9,1));
     ArrayList<Integer> result = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9));

     // int x = ?
     ArrayList<Integer> actual = SomeClass.removeLastOccurrence(x, input)
     assertEquals(result, actual);
  }
 }

並且removeLastOccurrence()方法可以執行以下操作

if(list != null && !list.isEmpty()){
    list.remove(list.size() - 1);
}

您必須使用:

list.remove(list.size()-1);

並返回新列表,以便您可以使用:

public static ArrayList<Integer> removeLastOccurrence(int x, ArrayList<Integer> list) {
    if (list != null && !list.isEmpty()) {
       list.remove(list.size()-1);
    }
    return list;
}

這是因為您沒有刪除任何元素。

list.get(list.size()-1);

不刪除元素。

采用

list.remove(list.size()-1)

代替。

根據具有get(int index)方法的Java ArrayList API ,您只需獲取ArrayList中index位置的元素。 這是您要尋找的方法:

public static void removeLastOccurrence(int x, ArrayList<Integer> list) {
    if (list != null && !list.isEmpty()) {
        list.remove(list.size()-1);
    }
}

如果將列表作為參數傳遞給方法,則它將成為局部變量。 因此,您不是從input列表中刪除元素,而是僅從局部變量list刪除元素。 解決方案是使用相同的代碼從您的方法中return該本地列表,或直接從“輸入”列表中remove該元素。 原始方法中的x參數是不必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM