详谈集合

2011-6-20  JSP正式开课

第二章   用集合存储对象

 

本章新单词:

collection  集合               key  

value   值                     stack  堆栈

queue      队列                contain   包含,包容

 

集合(collection)是存储多个元素的容器

集合用于存储检索、和操纵数据

Java的集合也被称为“容器类”;

一、Collection接口

Collection 接口存储一组不唯一无序的对象。

(1、)List 接口存储一组唯一有序(插入顺序)的对象。

    List 集合代表一个有序的集合、允许存在重复的元素、并可以存放null值。

    1、ArrayList类是基于数组实现的List类。   实现了可变长度的数组,在内存中分配连续的空间。

       随机访问集合元素的性能较好。(按索引访问)删除的性能不高

    2、LinkedList类是基于链表实现的List类。

       LinkedList是一个双链表的实现。

       LinkedList不是一个直接访问的数据结构。

       LinkedList插入删除元素时的性能非常出色。(顺序访问)

(2、)Set 接口存储一组唯一无序的对象。

    set集合不允许包含相同的元素。

    1、HastSet集合:元素是无序排列的,HashSet类是非线程安全的。允许集合元素是null。

           当像HashSet集合中添加元素时,会调用该元素的HashCode()方法得到hashcode()方法得到hashcode值,通过hashCode值决定元素的存储位置

           hashcode()方法的作用如下。

           为HashCode集合中的元素提供索引

           可以提高hashset集合查找元素的效率

    2、TreeSet类

       TreeSet类是SortedSet接口的实现类,它的集合元素是有序排列的。

       常用方法:

 

方法说明
E Ceiling(E e)返回当前set集合中大于等于给定元素的最小元素,如果不存在这样的元素,返回null
E floor(E e)返回当前set集合中小于等于给定元素的最大元素,如果不存在这样的元素,返回null

SortSet<E> subSet

(E fromElement,E toElement)

返回当前set集合的部分视图,其元素范围从fromElement(包括)到toElement(不包括)

比较HashSet类和TreeSet类

HashSet类在添加及查找元素时效率比TreeSet类高。

TreeSet类由于在保存元素时会对元素进行排序,因而时间较慢

当需要对元素进行排序时才使用TreeSet类,否则建议使用HashSet类。

集合的遍历:

    (3、)Iterator 接口的作用主要是遍历Collection集合中的元素。

    常用方法:boolean  hasNext();   //判断迭代器是否有元素

              next();      //返回迭代器的下一个元素

              void  remove();    //将迭代器返回的最后一个元素删除

    二、Map接口

      存储一组键值对象,提供key到value的映射

1、HashMap类

    HashMap类是基于哈希表实现的Map类,HashMap集合的元素是无序排列的。

2、TreeMap类

    TreeMap类是基于一个平衡二叉树实现的Map类,TreeMap集合可以对集合中的键进行排序,从而保证元素有序排列

HashMap类和TreeMap类的比较

   HashMap适用于在Map中插入、删除和定位元素

   TreeMap适用于按顺序对集合元素进行遍历

Eg:

    Map<String,String> stuMap = new HashMap<String,String>();

    stuMap.put("小艾","小艾的耳朵");     //添加值

    Set<String> stuSet = stuMap.KeySet();      //键的集合

    for(String stu : stuSet){           //遍历每一个键值

        System.Out.Println(stuMap.get(stu));    //根据键值获取value值

  

三、排序

Connection.sort(stuList,new Comparator<Student>(){

  public int cimpare(Student num0 , Student num1){

      //return num0.getStuId - num1.getStuId;    //int类型的比较

      return num0.getStuName.compareTo(num1.getStuName); //String类型的比较

  }

});

    四、List接口中定义的各种常用方法。

    返回类型        方法                                说明

    boolean     add(Object o)    在列表的末尾添加元素,起始位置的索引从0开始

    Object      get(int index)     返回指定索引位置处的元素

    int         size()           返回列表中的元素个数

    void        add(int index,Object o) 在指定的索引位置添加元素

    boolean     remove(Object o)   从列表中删除元素

    boolean     remove(int index)  从列表中删除指定位置元素,起始索引位置从0开始      

    Object      contains(value)    查询元素是否存在

    boolean     clear()          删除全部数据

    五、LinkedList的一些特殊方法

    返回类型        方法                说明

    void          addFirst(Object o)   在列表的首部添加元素

    void          addLast(Object o)    在列表的末部添加元素

    Object        getFirst()           返回列表中的第一个元素

    Object        getLast()            返回列表中的最后一个元素

    Object        removedFirst()     删除并返回列表中的第一个元素

    Object        removeLast()       删除并返回列表中的最后一个元素

    六、HashMap的一些特殊方法

    方法                       说明

    Object put(Object key,Objetc value)            添加元素

    Object get(Object key)         根据key值获取元素(即,得到vlaue值),如果不存在指定的键,返回null

    Object remove(Object key)        删除由指定的键映射的“键-值对”

    int size()                       返回元素个数

    Set keySet()                     返回键的集合

    Collection values()              返回值的集合

    boolean containsKey(Object key)  如果存在由指定的键映射的“键-值对”,返回true

   

C#中

  HashTable 哈希表

  添加元素        add(key,value)

  值得类型为Object类型,所以当得到一个值时需要类型转换

  删除元素        Remove()通过key值删除

  删除所有元素    clear()

 

Collection和Collections的区别

Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法。

Collections是一个包装类,它包含有各种有关集合操作的静态多态方法,此类不能被实例化。

    是针对集合类的一个帮助类 ,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值