ArrayList中remove方法重载的最优调用
问题描述
现在有一个ArrayList<Integer> list = [1, 2, 3, 5, 6, 7]
int target = 3;
list.remove(target);
请问此时list.remove(target);操作之后,list = [1, 2, 3, 6, 7]还是list = [1, 2, 5, 6, 7],换而言之,是会按照索引去删除元素,还是会按照元素删除元素,这里会调用的是remove(Object o),还是remove(int index)?
实际结果
list = [1, 2, 3, 6, 7]
原因分析
我们可以发现是按照索引去删除元素的,为什么会这样呢?
这就涉及到重载方法的最优调用
如果是调用的remove(Object o)则还涉及到向下转型,自动装箱/拆箱,比较麻烦
因此在这种情况下,系统调用的是remove(int index)
相关代码
package com.tan.arraylist;
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(5);
list.add(6);
list.add(7);
System.out.println("list = " + list);
int target = 3;
System.out.println("list.remove(target) = " + list.remove(target));
System.out.println("list = " + list);
}
}