美文网首页
ArrayList的remove()方法

ArrayList的remove()方法

作者: 丿灬尘埃 | 来源:发表于2020-07-07 15:11 被阅读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

    相关文章

      网友评论

          本文标题:ArrayList的remove()方法

          本文链接:https://www.haomeiwen.com/subject/iooyqktx.html