数组
    一组具有某种特性的数据存放在一起 数据类型一致 长度固定

    集合(与数组类似 集合的长度存储后还能改变)
    是指具有某种特定性质的具体或抽象的对象汇总而成的集体
    (可以理解为我们封装的Box 只不过比我们写的方法更多 更高级)
    都在java.util包下

    集合有两大体系:Collection接口 和 Map接口

    Collection
    存储的value都是引用类型的
    其中常用:
    List接口:有序可重复
    常用具体实现类:
    1.ArrayList(类似于我们写的ArrayBox)
    2.LinkedList
    3.Vector
    与 ArrayList区别 类似于 StringBuffer与StringBuilder 区别
    VectorJDK 1.0 ArrayList JDK1.2
    早期版本 线程同步 安全性较高 执行效率相对较低
    后期版本 线程不同步 安全性较低 执行效率相对较高

    Queue接口:有序可重复
    常用具体实现类:
    LinkedList类

    Set接口:无序无重复
    对于重复的元素 只存第一个进来的 后续的拒绝存入
    常用具体实现类:
    1.HashSet
    2.TreeSet

    Map
    存储方式以 键值对 的形式存储 key-value
    类似于映射 通过一个key可以直接定位value的位置
    key若有相同的 则将原有的value覆盖
    key无序无重复 value无序可重复
    其中常用:
    HashMap(key可以为null) —-> 早期版本 Hashtable(key不能为null 编译时好用 运行不好用)
    TreeMap
    Hashtable
    Properties

    序:即顺序 添加进去的元素 与 取得元素的顺序(注意不是集合自己的顺序)
    重复:两个对象元素一致

    集合特点
    List:元素 有序 可重复(有索引)
    ArrayList:查询快 增删慢
    LinkedList:查询慢 增删快
    Set:元素 无序 不可重复(没有索引) 遍历只能用 Iterator迭代器 和 增强for 不能用普通for
    HashSet:查询快 增删慢(底层就是Map)
    存放的引用数据类型需重写hashCode()和equals()方法
    TreeSet

    集合什么情形下使用
    5.1 想要存储一组元素
    数组 or 集合 如果存储的元素以后长度不变 用数组
    如果长度不确定 用集合
    5.2 长度不确定时——>集合
    List家族 有序 存储有顺序用这个
    1.ArrayList 更适合遍历轮询
    2..LinkedList 更适合插入删除
    3.Stack LIFO
    Set家族 无序 无重复 存储元素希望自动去掉重复元素用这个
    HashSet 性能更高
    TreeSet 希望存进去的元素自动去重复 同时还能自动排序
    Map家族k-v 想要通过唯一的kay快速找寻v 就用map
    HashMap 性能更高
    TreeMap 希望存进去的元素它的key能自动排序