【发布时间】:2017-03-08 18:55:53
【问题描述】:
我是 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);
}
}
如果有人可以帮助并告诉我我缺少什么,那就太好了,因为我觉得我只是缺少一小部分拼图,这让我感到非常沮丧。
【问题讨论】:
-
您在哪里尝试删除您的元素?我没有看到任何删除?
-
你的测试应该调用你正在测试的方法吧?!
-
list.get(list.size()-1) 没有删除任何东西,它返回最后一个元素
-
在调用
assertEquals()之前,你必须先调用removeLastOccurrence(1, input);
标签: java arraylist integer lastindexof