Java的Collection,List,ArrayList,LinkedList

先来看看Collection,List,ArrayList,LinkedList它们之间的关系

Collection/Iterable/List都是接口。

List是有序的可重复的,这一点可以从官方文档中得出。

List是一种有序的集合
An ordered collection (also known as a sequence)
与sets不同,list的元素可以重复
Unlike sets, lists typically allow duplicate elements.

创建一个list对象并给这个list添加元素。

因为List是接口,所以要用实现这个List接口的类ArrayList来创建对象。

  @Test
    public void listTest() {
        List<String> list=new ArrayList<>();
        list.add("Welcome");
        list.add("to");
        list.add("java");
        System.out.println(list);

    }
}

结果:注意,虽然直接把list变量名称写进了System.out.println(list),但实际输出的却是我们通过add方法创建的List。

而不是list的引用地址,由此可见list默认调用了toString方法.

[Welcome, to, java]

ArrayList

ArrayList底层是用数组来实现存储的,特点:查询效率高,增删效率低,线程不安全。

与之对应的LinkedList:查询效率低,增删效率高,线程不安全。

为什么ArrayList的增加删除效率低呢?因为它的底层是通过copy数组的方式来达到增加删除的。

比如,ArrayList要删除下面数组中的3,它会把4移到3,5移到4.

[1,2,3,4,5]

猜你喜欢

转载自www.cnblogs.com/majestyking/p/12402411.html