集合,迭代器

集合:

存储长度可变的多相同数据的存储模型
    集合体系:
        Collection单列:每个小区域存储的数据只有一个
            List:重复
                ArrayList
                LenkedList
                ...
            Set:不重复(没有index)
                HashSet
                TreeSet
                ...
        Map双列:每个小区域存储的数据只有一对
            HashMap
            ...
    集合体系的关系:实现
        接口的:    Collection     Map List Set
        实现类:    ArrayList LenkedList HashSet TreeSet HashMap

接口的创建方式:多态
Collection:

单列层次中多有的根
    有些集合可重复,有些不可重复
    没有下标
    没有获取单个元素的方法

    常用方法:
        boolean add(E e);    添加元素
        boolean remove(Object o)    从集合中移除指定元素
        void clear()    清空集合中的元素


        boolean contains(Object o)    判断集合中是否存在指定元素
        boolean isEmpty()    判断集合是否为空

迭代器:

集合专门的遍历方式
    调用itreator()方法获取一个Itreator对象
    HasNext():判断迭代器中是否还有元素
    next():从迭代器中取出来一个元素,取出来之后就没了


List:
    接口 
    单列 
    重复 
    有序(有下标,有索引,有index)
    继承了Collection    
    Collection中的方法List都有
    只需要看List独有的方法

    常用方法:
        boolean add(int index,E element);    在集合中指定位置插入元素,可以做追加(允许index的值在原最大下标+1)
        E remove(int index)    删除指定元素,并返回删除元素
        E get(int index)    返回指定位置的元素
        E set(int index,E element)    修改指定元素,并返回被修改元素

增强for:内部封装了一个迭代器
    格式:
        for(数据类型 变量名:数据 数组/单列集合){

        }    
LinkedList:链表结构
    常用方法:
        void addFirst(E e)    在列表开头插入指定元素
        void addLast(E e)    在列表末尾追加指定元素


        E getFirst()    返回列表第一个元素
        E getLast()    返回列表末尾元素
        E removeFirst()    移除第一个元素并返回
        E removeLast()    移除末尾元并返回  

ArrayList数组结构
    数组是一种查询快,增删慢的模型
    查询快:查询数据通过索引定位,查询任意数据耗时相同 
    删除慢:删除元素时,要将原始数据删除,同时元素进行前移
    添加慢:添加元素时,要在添加位置的每一个数据进行后移,再添加元素
LinkedList链表结构
    链表是一种增删快,查询慢的模型
    增删快:增加和删除时,只需要修改下一个地址指向,耗时相同
    查询慢:查询数据时,都需要从头开始查询

Set:不重复,没有独有的方法,学习完Collection就学完了Set
    无序
    没有下标
    不能保证存储和取出的顺序一致

哈希值:通过地址值或内容或字符串或数组 通过计算得到的int类型的数据
    Ojbect中的hashCode()方法

    注意:默认同一个对象的哈希值是固定的,多次调用值相同,值不重复
        特殊情况:"通话"和"重地"不是相同数据但是哈希值相同
                通过重写hashCode()实现不同对象哈希值相同

Set存储机制(不重复)
    当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode方法来得到该对象的hashCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置。如果有两个元素它们的hashCode方法返回的值进行取模16得到的值相同,之后判断地址值和equals,如果有一个相同就判定是相同元素,然后进行覆盖,如果判断是不同元素就进行插入.
也就是说。
    注意:本质上还是判断equals

HashSet:
    概述:
        由哈希表(实际为HashMap实例)支持。 对集合的迭代次序不作任何保证
    特点:
        底层数据结构是哈希表
        对集合的迭代顺序不进行任何保证,就是存储和取出的顺序不一定相同
        没有带索引的方法,不能使用for循环遍历
        继承Set集合,元素不能重复
    注意:
        哈希表元素为链表的数组

TreeSet:元素有序        
    集合有序:有下标
    元素有序:元素有排列显示的规则

    元素有序,不是存储或取出有序,而是按照一定的规则进行排序,排序方式取决于构造方法
        TreeSet():根据元素的自然排序进行排序
        TreeSet(Comparator comparator):根据指定的比较器比较
    特点:
        元素有序
        没有带索引的方法,不能使用for循环遍历
        继承Set集合,元素不能重复

Comparable:接口 给类加上一个自然排序
    排序的规则在
        ComparaTo():排序的规则
        返回值决定了排序方式
            0:相同元素 不插入
            正:插入的元素 在 已存在元素 后面  o-this  从大到小
            负:插入的元素 在 已存在元素 前面  this-o  从小到大
            o表示已存在元素
            this表示插入的元素

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值