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);
  1. 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

上一篇下一篇

猜你喜欢

热点阅读