日常踩坑

有人的地方就有江湖,有代码的地方就有坑

一。集合

List与Set继承自Collection。Collection提供定义了一个移除元素的接口

    boolean remove(Object o);

 可以看出,在Collection中该方法的定义是移除入参元素,在Set及其继承和实现中仍然是如此,但在List系列则不同。

List提供了两个remove

    E remove(int index);
    boolean remove(Object o);

可以看到第二种与Collection相似,但由于List是使用数组实现的,对于数组其自然能取到下标,因此就有了第一个remove。

对于一个List<Integer>,使用remove方法默认会调用第一个方法。

        List<Integer> l = new ArrayList<>();
        l.add(3);
        l.add(4);
        l.remove(1);
        System.out.println(l);

        Set<Integer> s = new HashSet<>();
        s.add(3);
        s.add(4);
        s.remove(1);
        System.out.println(s);

[3]
[3, 4]

Process finished with exit code 0

要使用Collection接口的remove方法定义,则需要给入参强转至Object

        l.remove((Object)1);

 

上一篇:27 Remove Element


下一篇:List.remove()踩坑记录