[英]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.