大家都知道, List 的 api 中列出了两个 remove 方法:
E remove(int index)
和
boolean remove(Object o)
这是两个 重载(overload) 的方法, 具体用法这里不再赘述.
可能有人(本人 )会有这样的疑惑: 假如有这样一个 List: 泛型类型为 Integer; 包含 1,3,5,7,9 五个元素. 这时, 问题来了, 当我们调用 remove 方法, 入参为 3 的时候, 会发生什么事呢? 是值为 3 的元素被移除了 还是 索引为 3 的元素不见了?我们试验一下:
import java.util.List;
import java.util.ArrayList;
public class RmTest {
public static void main(String[] args){
List<Integer> list = new ArrayList();
list.add(1);
list.add(3);
list.add(5);
list.add(7);
list.add(9);
list.remove(3);
list.forEach(System.out::println);
}
}
结果, 索引为 3 的元素被删掉了…有没有没猜对的, 猜对的人对重载已经很熟悉了.
那怎么才能删除值为 3 的元素呢? 实际上也很简单, 按重载规则, remove方法传一个 Integer 3 进去就行了:
Integer a = 3;
list.remove(a);