Java基础(三) 集合

#集合

    Java集合类存放于 java.util 包中,是一个用来存放对象(引用类型)的容器(存储基本类型会被自动装箱,转化陈包装类)

    ①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。

    ②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。

    ③、集合可以存放不同类型,不限数量的数据类型。

##1、集合的各体系结构

    Java 的集合 主要由两个接口派生出来的,分别是Collection和Map。


### 1.1 collection 集合   

    collection 主要派生了3个子类,分别为List(列表)、Set(集)、Queue(队列)。其中,List、Queue中的元素有序可重复,而Set中的元素无序不可重复;


####1.1.1 List 集合

  list 集合是有序的、可重复的。主要有两个实现类ArrayList和LinkedList。

#####1.1.1.2 ArryList

    1)  ArryList 底层是基于动态数据实现的,且线程不安全。

    2) 实现了序列化接口java.io.Serializable,支持序列化。

    3) 实现了Cloneable接口,它允许在堆中克隆出一块和原对象一样的对象,并将这个对象的地址赋予新的引用,这样显然对新引用的操作,不会影响到原对象。

    ArrayList 是如何扩容的?

#####1.1.1.3 LinkedList       

      LinkedList 底层是基于双向链表实现的。且线程不安全

#####1.1.1.4 Vector     

      和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低。

#### 1.1.2 queue

####1.1.3 set

##  1. ArrayList 和 LinkedList 的区别、优缺点以及应用场景?

    ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;


>1)底层实现区别:

    ArryList 底层是基于动态数据实现的,而LinkedList是基于双向链表实现的。

>2)优缺点:

    由于ArrayList底层由动态数组实现的,而数组是按照顺序且连续的存储数据。所以一般情况下查询的速度会比LinkedList快,但是插入或者删除数据的速度较LinkedList慢,因为数组的结构是连续的,每一次插入或删除数据就需要变更整个数组中的数据的位置(末尾插入和删除除外)。

>3)应用场景

    应用场景由他们的特点决定的。ArryList适用与查询多的场景,而LinkedList适用与增删的场景。


    知识扩展

    1) 链表是物理存储结构上非连续的、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

    2) 链表的结构:链表是由很多节点构成的,每个节点又包含两部分,即数据和指针,数据存储实际的数据,指针保存下一个节点的位置。

你可能感兴趣的:(Java基础(三) 集合)