黑马程序员--java集合(一)

             ------- android培训  java培训、期待与您交流! ----------

一、集合的概念
    什么是集合:集合是容器,长度可变,可以储存任意类型的对象。
          如果储存的是基本数据类型,内部会自动转换为包装类。

    集合与数组的区别:
            数组:长度固定    可以存储基本数据类型,也可以存储对象   存储的对象要是同一类型的
            集合:长度不固定  只能存储对象                          可以存储任意类型的对象(一般都会存储同一类型)
    
二、集合分类
    collection:    一次储存一个对象,单列集合

        List    有索引,可重复
            ArrayList: 数组实现,查找快,增删慢
            LinkedList:链表实现,增删快,查找慢
            Vector      数组实现,线程安全    
    
        Set    无索引,去重复
            HashSet        使用哈希算法去重复,效率高,但无序
            LinkedHashSet    使用哈希算法去重复, 效率高,并且保留存储顺序    是HashSet的子类。
            TreeSet        使用二叉树去重复,可以自定义元素存储的顺序
            

       map:    一次储存两对象,键值对集合

            HashMap        使用哈希算法去重复,效率高,但无序
            LinkedHashMap    使用哈希算法去重复, 效率高,并且保留存储顺序
            TreeMap        使用二叉树去重复,可以自定义元素存储的顺序
            Hashtable    类似HashMap, 线程安全, 效率略低, 不允许null键和null值
            Properties    Hashtable的子类, 用来操作配置文件

三、集合的方法
        add();       向集合中添加元素
        addAll();      向集合中添加另一个集合所有的元素
        remove();      删除集合中指定的元素
        removeAll()   删除两个集合的交集
        retainAll()    保留两个集合的交集
        clear();       移除集合中所有的元素
        contains()     判断集合中是否包含这个元素    
        containsAll()  判断集合中是否包含另一个集合中所有元素
        isEmpty()     判断集合是否为空
        equals()     判断两个元素是否相等
        size()         获取集合中的长度
        hashCode()     获取哈希值
        iterator()     获取迭代器
        toArray()     获取集合转化为的数组
        

四、集合的循环遍历

    collection:
       List  因为List有索引,所以比Set多一个for循环遍历    注:只有List增册改查,因为有索引
        for循环:    从0循环到集合的size()-1, 每次获取其中一个
        迭代器:     通过iterator()方法得到迭代器, 调用hasNext()和next()方法进行迭代
        增强for循环:    for (类型  变量名 : 容器) { 循环体 }
         Set
        迭代器:     通过iterator()方法得到迭代器, 调用hasNext()和next()方法进行迭代
        增强for循环:    for (类型  变量名 : 容器) { 循环体 }
     Map:
        keySet():   得到所有的键组成的Set, 遍历Set得到每一个键, 然后再分别获取值
        entrySet(): 得到所有的Entry组成的Set, 遍历Set得到每一个Entry, 再分别getKey()和getValue()


五、集合循环遍历中的删除
    
        a.for循环:         删除时由于后面的元素会向前移动, 所以删除之后循环变量要--
        b.迭代器:          要删除元素时必须使用Iterator中的remove()否则会抛出异常
        c.增强for循环:        不能删除


六、HashSet
    1.HashSet原理
        我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低
        哈希算法提高了去重复的效率, 降低了使用equals()方法的次数
        当HashSet调用add()方法存储对象的时候, 先调用对象的hashCode()方法得到一个哈希值, 然后在集合中查找是否有哈希值相同的对象
            如果没有哈希值相同的对象就直接存入集合
            如果有哈希值相同的对象, 就和哈希值相同的对象逐个进行equals()比较
                比较结果为false就存入, true则不存
    2.将自定义类的对象存入HashSet去重复
        类中必须重写hashCode()和equals()方法
        hashCode(): 属性相同的对象返回值必须相同, 属性不同的返回值尽量不同(提高效率)
        equals(): 属性相同返回true, 属性不同返回false


七.TreeSet
    1.特点
        TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
    2.使用方式
        a.自然顺序(Comparable)
            TreeSet类的add()方法中会把存入的对象强转成Comparable类型
            调用对象的compareTo()方法和集合中的对象比较
            根据compareTo()方法返回的结果进行存储
        b.比较器顺序(Comparator)
            创建TreeSet的时候可以制定 一个Comparator
            如果传入了Comparator, 那么TreeSet就不会按照自然顺序排序了
            add()方法内部会自动调用Comparator接口中compare()方法排序
        c.两种方式的区别
            TreeSet构造函数什么都不传, 默认按照类中Comparable的顺序(没有就报错ClassCastException)
            TreeSet如果传入Comparator, 就优先按照Comparator


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值