ArrayList的remove()方法
2020-07-07 本文已影响0人
丿灬尘埃
最近从PHP转行于Java,对于PHP 弱语言的好处就是一个数组可以代替Java 好多种数据结构,对于PHP的数组移除已经很熟悉了【感兴趣传送门:https://www.jianshu.com/p/dafcf8d97aff
】,但是对于Java的 ArrayList
移除方法,也做了一个简单的了解,毕竟作为一个充满求知欲的程序员,不明白得实现原理,对不起这个行业。
'不如'正题。
一. remove
,其有2种重载方式
boolean remove(Object var1);
E remove(int var1);
-
remove(Object var1)
可以看到这个方式的参数是一个obj 那么意味着什么呢,意味着,可以直接传入对应的一个值,就可以remove.
List<Long> a = new ArrayList();
a.add(1L);
a.add(2L);
a.add(3L);
a.remove(3L)
这样就可以移除long
型的3了,其实可以理解为,想移除一个对应值,直接remove(value)即可【按照元素删除 会删除和参数匹配的第一个元素】,不需要知道下标,前提是存在该值,当然如果不存在想尝试移除,只会得到一个false
而已。
查看是否存在某值a.contains(value)
,返回值为Boolean
.
2.E remove(int var1)
可以简单看到其返回值是个泛型,其实它的入参就是一个list
的下标key
,返回的是移除的值
源码如下
public E remove(int index) {
Objects.checkIndex(index, this.size);
Object[] es = this.elementData;
E oldValue = es[index];
this.fastRemove(es, index);
return oldValue;
}
说道这里,当时我有个很大的疑问,我如果传入一个number,它怎么知道我是移除的下标还是value呢,小朋友,一起熟悉下,java数据类型吧。
首先定义整数型的List,只能这样写
List<Integer> aList = new ArrayList(); //正确
List<int> bList = new ArrayList();//对不起,错误写法
所以你应该知道了吧,按照下标移除参数类型是int
,list根本定义不出int型的元素,所以就根本不存在那种区分不出来的情况。
二. list
初始化
list初始化,有一种很简单的方式
List<Integer> aList = Arrays.asList(2, 3, 4);
需要注意的一点是,这个方式虽然简单,但是无法使用remove移除元素,
使用时会报错Exception in thread "main" java.lang.UnsupportedOperationException