`
wh007_cx
  • 浏览: 29337 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【ZT】集合类 List/Set/Map... 的区别和联系

 
阅读更多

Collection:List、Set
Map:HashMap、HashTable

如何在它们之间选择


一、Array , Arrays

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、效率高,但容量固定且无法动态改变。array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.arraycopy():array的复制。


二、Collection , Map

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。

1、Collection 和 Map 的区别

容器内每个为之所存储的元素个数不同。
Collection类型者,每个位置只有一个元素。
Map类型者,持有 key-value pair,像个小型数据库。

2、各自旗下的子类关系

Collection
    --List: 将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。
          --ArrayList / LinkedList / Vector
    --Set : 不能含有重复的元素
          --HashSet / TreeSet
Map
    --HashMap
    --HashTable
    --TreeMap

3、其他特征

*  List,Set,Map将持有对象一律视为Object型别。
*  Collection、List、Set、Map都是接口,不能实例化。
   继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
*  vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。


三、Collections

Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。
相当于对Array进行类似操作的类——Arrays。
如,Collections.max(Collection coll); 取coll中最大的元素。
    Collections.sort(List list); 对list中元素排序

四、如何选择?

1、容器类和Array的区别、择取
   *  容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。
   *  一旦将对象置入容器内,便损失了该对象的型别信息。

2、
  *  在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();
     Vector总是比ArrayList慢,所以要尽量避免使用。
  *  在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。
     HashTree存在的唯一理由:能够维护其内元素的排序状态。 
  *  在各种Maps中
     HashMap用于快速查找。
  *  当元素个数固定,用Array,因为Array效率是最高的。

结论:最常用的是ArrayList,HashSet,HashMap,Array。


注意:

1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。
2、Set和Collection拥有一模一样的接口。
3、List可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue

5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。
   HashMap会利用对象的hashCode来快速找到key。
    *  hashing
       哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。
       我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。
       
       发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。

6、Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。
使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。

分享到:
评论

相关推荐

    基于flask和echarts的中国疫情数据大屏可视化项目-大数据分析、数据可视化+ajax+JavaS+requests

    基于flask和echarts的中国疫情数据大屏可视化项目 技术栈: html ajax JavaScript python:requests flask 实现流程: 数据来源:腾讯实时疫情 https://news.qq.com/zt2020/page/feiyan.htm#/ 具体数据在: ...

    ZT19600/25/50端头液压支架的应用

    在冀中能源峰峰集团新屯矿的应用实践中,ZT19600/25/50端头液压支架的使用使得生产作业更加安全、高效和有序。 5. 设备参数: 文件中提到了多种型号的液压支架以及其它矿业设备,例如:ZT19600/25/50、ZF3200/16/...

    视频在线学习地址:https://www.bilibili.com/video/BV1Az411q7BE ——————————

    视频在线学习地址:https://www.bilibili.com/video/BV1Az411q7BE ———————————————— ——Python-Linux基础:BV1Az411q7BE

    ZT18000/22/40型一主两副式端头液压支架的设计及应用

    结合窑街海石湾煤矿6114综放工作面的情况,详细介绍了ZT18000/22/40型一主两副式端头液压支架在工作面的应用情况、支架结构特点和使用效果分析,对煤矿中相似工况下端头支架选型具有一定参考意义。

    ztb.rar_.zt_delphi_招投标

    在IT行业中,招投标系统是企业进行项目竞标和采购过程中的关键工具,它涉及到大量的信息管理、流程控制和法规遵循。本压缩包“ztb.rar_.zt_delphi_招投标”显然是一个基于Delphi编程语言开发的招投标软件源代码。...

    Phần mềm DH Toán:truyenthong.edu.vn:下载产品:https://www.truyenthong.edu.vn-开源

    关于 TeX、Maple、GSP 的产品:https://www.truyenthong.edu.vn

    一个牛人提供的GIS源码(很好)

    特色三:系统已经详细到每个楼房楼层的办公室以及办公室内的电话和教师名单、教学楼的班级以及课程表、宿舍的成员组成联系方式等。 特色四:空间数据库和属性数据库通过SQL Server的视图功能实现关联。 开发环境:...

    ZEBRA 105Plus打印机说明书

    Zebra ZT410(产品特点:分辨率: 203 dpi/每毫米 8 点...) Zebra ZT420(产品特点:打印宽度: 6.6 英寸/168 毫米...) Zebra ZT210(产品特点:预装中文字体,12 点/毫米/300dpi 多选 ...) Zebra ZT230(产品...

    英语学习网址(很多哦)

    在数字化时代,网络成为了学习英语的重要平台,提供了丰富的资源和工具。以下是一些推荐的英语学习网址,涵盖了听力、阅读、写作、口语等多个方面,适合不同程度和需求的英语学习者。 1. **择校学习网** ...

    计算机二级学习网址.pdf

    计算机二级考试是中国计算机技术等级考试的一个重要组成部分,主要考察考生对特定编程语言或数据库管理系统的理解和应用能力。本文将详细解析计算机二级考试的学习资源,并针对C语言、Visual Basic、Visual FoxPro、...

    wap红包弹出框

    wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包弹出框wap红包http://wap.cdznrx.com/zt/rtnx180105/ ...

    H3c图标库ALL.ppt

    viso图标 思科、华为、H3C网络数通设备系统软件&官方手册、软件下载专题大集合 --------------------------------------------------------...专题和资源绝对是互联网绝无仅有的,更何况还在玩命似的花那么多时间去更新

    ZT213/ZT213LEEA规格书V2.10-低功耗RS232多通道USB收发器/驱动器芯片手册

    ZT213/ZT213LEEA是一款专为低功耗应用设计的RS232多通道USB收发器和驱动器芯片,广泛应用于数据通信、工业控制、物联网设备等领域。本文将深入探讨其规格参数、功能特点、选型指南及应用实例,帮助读者全面了解这款...

    考研网址总汇大全,网址多多

    4. **专业课考试(论坛)**:如http://www.1zhao.org/register.php?id=43439,这类平台专注于各高校的专业课考试,考生可以找到针对性的复习材料,尤其是非统考科目的信息。 5. **试题库**:如...

    单片机汇编讲义.rar

    视频教程: ...《单片机汇编考试宝典》之...https://www.bilibili.com/video/BV1ZT4y157SJ/ 《单片机汇编考试宝典》之《五,六部分》: https://www.bilibili.com/video/BV1na4y177Yb/ https://www.bilibili.com/video/BV1

    计算机二级自学网址

    - **复习全攻略**:`http://ncre.csai.cn/zt/ZT_C_cc0911.htm`提供全面的复习指南,帮助考生高效备考。 - **考点分析**:`http://ncre.csai.cn/ncrefx/200612201144361030.htm`对历年的考试热点进行梳理,指导考生...

    baidumap httpclient

    在IT行业中,网络通信是应用开发中的重要环节,特别是在移动应用和Web服务中。本示例涉及的主题是“baidumap httpclient”,这显然与使用百度地图API结合HTTP客户端库进行位置跟踪和数据上传有关。以下是这个话题的...

    【Demo】基于数据分析的智能饮食推荐APP(含菜品识别).zip

    测算http://www.chinacaipu.com/zt/sccs.html 体质算法 11、http://www.chinacaipu.com/menu/jianya/ 特殊人群(压力之类的) 需求分析 登陆、注册 输入基本信息信息(身高、体重、性别、年龄) 额外信息(工作、...

    【Demo】基于数据分析的智能饮食推荐APP(含菜品识别).rar

    测算http://www.chinacaipu.com/zt/sccs.html 体质算法 11、http://www.chinacaipu.com/menu/jianya/ 特殊人群(压力之类的) 需求分析 登陆、注册 输入基本信息信息(身高、体重、性别、年龄) 额外信息(工作、...

Global site tag (gtag.js) - Google Analytics