话不多说,直接上代码:
import java.util.ArrayList;
import java.util.List;
public class RemoveTest {
public static void main(String[] args) {
List<Integer> firstList = new ArrayList<>();
firstList.add(1);
firstList.add(2);
firstList.add(3);
//remove(Integer a)
Integer a = 2;
firstList.remove(a);
System.out.println("remove Integer 2, result is: " + firstList);
List<Integer> secondList = new ArrayList<>();
secondList.add(1);
secondList.add(2);
secondList.add(3);
//remove(int b)
int b = 2;
secondList.remove(b);
System.out.println("remove int 2, result is: " + secondList);
}
}
运行结果:
remove Integer 2, result is: [1, 3]
remove int 2, result is: [1, 2]
原因是两个方法的背后实现各不相同:
1>当入参数据类型为Integer时,执行的是删除某具体元素的方法;
boolean remove(Object o);
2>当入参数据类型为int时,执行的是依据下标删除元素的方法。
E remove(int index);