容器集合类

容器(Collection)

    数组是一种容器,集合也是一种容器

    java编程中, 装其他各种各样的对象(引用类型)的一种东西, 叫容器

    (图书馆里所有的书, 要想管理图书馆里所有的书, 就需要先把这些书放到一个东西里面, 目前掌握的知识来说, 只能是数组, 数组的长度是固定的,

    这就出现 一个问题, 数组的长度该定义成多长 ? 长度是不固定的, 因为不知道有多少本书, 这个时候需要这样一种机制: 

    定义一种东西, 长度不固定, 可以随时添加和删除, 这种东西就是Collection, 只要不超出内存, 随便往里添加)

  Collection---接口:

    Set接口

      *HashSet---实现类(以哈希码表为底层的实现机制)

      TreeSet---实现类(以二叉树(一种数据结构)为底层的实现机制)

      没有顺序, 不可以重复(可以互相equals就叫重复)

    !List接口
      *ArrayList---实现类(以数组为底层的实现机制)

      LinkedList---实现类(以链表为底层的实现机制)

      有顺序, 可以重复

      ArrayList(API中说初始容量为10的, 注意这个问题), LinkedList
      有顺序, 可以重复添加
      get
      set(有一个返回值要注意 !)

      add()

      remove(int)

      remove(Object)

      indexOf

      lastIndexOf

    !Map接口(键值对)

      *HashMap---实现

      TreeMap---实现类

      每次往里放的时候都是一对一对的

      HashMap(哈希表做索引), TreeMap(二叉树做索引)
      键值对(键不能重复, 什么叫重复)
      put(为什么有个返回值啊亲 ?)
      get
      remove(为什么也有个返回值啊亲 ?)
      containsKey
      containsValue
      size
      isEmpty
      putAll
      clear

  Collection接口的方法

    Collection接口的使用

      代码实例: eclipse--com.test3

      Collection<String> c = new ArrayList<String>();

      问题: 为什么不直接写ArrayList<String> a = new ArrayList<String>();

      c.add(参数类型必须是Object)

      c.remove方法: 通过判断两个对象是否互相的equals来确定是不是该删除该对象, 自定义的类, 需要自己重写父类的equals方法

      重写equals方法, 也应该重写hashCode方法

      hashCode通常用来做索引, 一个对象通过它的hashCode的值可以找到它在内存中的地址, 所以两个对象如果equals了,

      而且又要作为索引的情况下, hashCode的值必须相等

 

      总结:
      集合是数组的一种延伸, 与数组相比有很多好处和优点,
      1, 可以存放不同的类型
      2, 长度可变
      3, 随时存放和获取

      六个接口和一个类:
      Collection
      List
      Set
      Map
      Iterator
      Comparable

      Collections工具类

      选择一种集合类型是一件非常痛苦的事

      在以后的编程中要考虑读取和修改的效率问题, 数据的存取在以后的使用过程中, Collection是主要的载体,
      Array: 读快改慢
      Linked: 读慢改快
      Hash: 介于两者之间的

posted on 2018-05-14 16:51  啊耀`  阅读(102)  评论(0编辑  收藏  举报

导航