美文网首页
Java基础(集合)

Java基础(集合)

作者: 阿里巴特爱扯皮 | 来源:发表于2017-09-01 00:30 被阅读0次

    一、集合概述

    Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。

    特点

    1.        长度可以发生改变

    2.        只能存储对象

    3.        可以存储多种类型对象

    与数组区别

    数组

    集合

    长度

    固定

    可变

    存储元素

    基本类型/引用类型

    引用类型

    元素类型的一致性

    必须一致

    可以不一致

    二、集合体系

    集合作为一个容器,可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。

    数据结构:数据存储的方式

    Java中集合类的关系图

    集合体系导图(用鼠标拖动图片可看大图或右击图片选择在新标签页中打开图片(I))

    三、Collection

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行,于是衍生出两个子类接口List和Set。

    ArrayList

    构造方法

    public ArrayList()

    public ArrayList(int initialCapacity)

    public ArrayList(Collection c)

    ArrayList依赖于数组实现的,初始长度为10的Object[],并且可随需要而增加的动态数组

    当元素超过10,那么ArrayList底层会新生成一个数组,长度为原来的1.5倍+1,

    然后将原数组内容复制到新数组中,并且后续增加的内容会放到新数组中,

    当新数组无法容纳增加的元素,重复该过程

    ArrayList对随机访问性能很好,但进行大量插入,删除操作,性能很差,

    因为操作之后后续元素需要移动

    LinkedList

    LinkedList功能与ArrayList,Vector相同,内部是依赖双链表实现的,

    因此有很好的插入和删除性能,但随机访问元素的性能很差

    构造方法

    public LinkedList()

    public LinkedList(Collection c)

    LinkedList类中有一个Entry内部类,Entry内部类包含3个部分向前的引用,向后的引用,数据

    header.next = header.previous = header;

    ArrayList VS LinkedList

    ArrayList底层采用数组实现,LinkedList底层采用双链表实现

    如果为列表增加对象

    ArrayList是ArrayList底层数组维护的,LinkedList是LinkedList底层Entry对象维护的

    LinkedList底层Entry结构

    Entry{

    Entry previous;

    Object element;

    Entry next;

    }

    其中element就是我们添加的元素,最后将生成的Entry对象加入到链表中

    插入和删除操作时,采用LinkedList好,搜索时,采用ArrayList好

    blog.csdn.net/haovip123/article/details/45423683

    相关文章

      网友评论

          本文标题:Java基础(集合)

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