删除ArrayList的最后一个元素

时间:2017-03-08 18:55:53

标签: java arraylist integer lastindexof

我是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);
    }
}

如果有人可以提供帮助并告诉我我错过了什么会很好,因为我感到非常沮丧,因为我觉得我只是错过了一小部分难题。

5 个答案:

答案 0 :(得分:2)

您的测试应如下所示。在原始帖子的测试代码中,您实际上并没有调用您尝试测试的方法。

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);
}

答案 1 :(得分: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;
}

答案 2 :(得分:1)

这是因为你没有删除任何元素。

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

不会删除元素。

使用

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

代替。

答案 3 :(得分:1)

根据Java ArrayList API readFields xs = evalStateT (createA (For :: For Read) readM) xs main = print (readFields ["14", "42"] :: Maybe (Int, Int)) 方法,您只需获取ArrayList中get(int index)位置的元素。 这是您正在寻找的方法:

index

答案 4 :(得分:-1)

如果将列表作为参数传递给方法,它将成为局部变量。因此,您不是从input列表中删除元素,而是仅从局部变量list中删除元素。解决方案是return来自您方法的本地列表,或直接来自您的&#34;输入&#34;的remove元素。列表使用相同的代码。原始方法中的x参数是不必要的。