常用有collection和Map两个接口的实现类,collection用于存放多个单对象,Map用于存放key-value形式的键值对。
collection分为两种类型的接口:list和set,两者最明显的差别为list支持放入重复的对象,而set不支持。List接口常用的实现类有:ArrayList、LinkList、Vector及Stack;Set接口常用的实现类有:HashSet、TreeSet,对于Collection的实现类而言,要重点掌握一下几点:
collection的创建
对应的为collection实现类的构造器,需要掌握在构造器方法中collection的实现类都做了些什么。
往collection中增加对象
对应的为collection中的add(E)方法,往collection中增加对象时collection的实现方式决定此方法的性能。
删除collection中的对象
对应的为collection中的remove(E)方法,实现类的实现方式决定了此方法的性能。
获取collection中的单个对象
对应的为collection中的get(index)方法。实现类的实现方式决定了此方法的性能。
遍历collection中的对象
对应的是通过collection的iterator方法获取迭代器,进而遍历。
判断对象是否存在于collection中
对应的是collection中的contains(E)方法,实现类的实现方式决定了此方法的性能。
collection中对象的排序
如何对collection中对象合理地排序也是使用collection对象时经常需要考虑的问题,但由于排序主要取决于所采取的排序算法。
对于Arraylist而言,最须注意的有一下几点:
Arraylist基于数组方式实现,无容量的限制:
Arraylist在执行插入元素时可能要扩容,在删除元素时并不会减小数组的容量(如希望相应的缩小数组容量,可以调用Arraylist的trimToSize()),在查找元素是要遍历数组,对于非null的元素采取equils的方式寻找:
Arraylist是非线程安全。
对LinkList而言,最要注意一下几点:
LinkList基于双向链表机制实现;
LinkList在插入元素时,须创建一个新的Entry对象,并切换相应元素的前后元素的引用;在查找元素时,须遍历链表;在删除元素时,要遍历链表,找到要删除的元素,然后从链表上将此元素删除即可,
LinkList是非线程安全的。
对于Vector而言,最要注意的一点:
Vector是基于Synchronized实现的线程安全的Arraylist,但在插入元素时容量扩充的机制和Arraylist稍有不同,并可通过传入capacityIncrement来控制容量的扩充。
Stack注意要点:
Stack基于Vector实现的,支持LIFO。
对于HashSet而言,最要注意的有一下几点:
HashSet基于HashMap实现,无容量限制
HashSet是非线程安全
对于TreeSet而言:
TreeSet和HashSet一样,也完全基于Map来完成的,并且同样也不支持get(int)来获取指定位置的元素,只是TreeSet基于的是TreeMap,除了这些基本的Set实现外,TreeSet还提供了一些排序方面的支持。例如传入Compartor实现、descendingSet及descendingIterator.
TreeSet基于TreeMap实现,支持排序:
TreeSet是非线程安全的。
对于HashMap而言:
HashMap而言,最要注意一下几点。
HashMap采用数组的方式存储key、value构成的Entry对象,无容量的限制:
HashMap基于key hash寻找Entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决;
HashMap在插入元素时可能会要扩大数组的容量,在扩大容量时须要重新计算hash,并复制对象到新的数组中;
HashMap是非线程安全的。
it's never hid and you just have to light it
对TreeMap而言:
TreeMap基于红黑树实现,无容量限制;
TreeMap是非线程安全。
分享到:
相关推荐
"tesseractdata各语言集合包.zip" 是一个包含多种语言数据的压缩包,用于扩展Tesseract OCR的功能,使其能够处理不同语言的文本识别任务。下面将详细探讨这个压缩包以及其中的语言数据集。 一、Tesseract OCR 简介 ...
标题中的“lumia救砖集合包V2.0.7z”暗示了这是一个专为Lumia系列智能手机设计的修复工具包,主要用于解决设备无法正常启动或运行,即所谓的“砖头状态”。这种问题通常发生在尝试更新固件、安装错误的软件或硬件...
标题“tessdata各语言集合包.zip”指的是一个包含Tesseract OCR(光学字符识别)引擎所需数据的压缩文件。Tesseract是一款开源的OCR软件,由Google维护,能够识别图像中的文本并将其转换为可编辑的文本格式。这个...
谭浩强C语言C++集合包是一份专为编程初学者设计的学习资源,它整合了谭浩强先生的多部经典著作,旨在帮助用户系统地掌握C语言和C++的基础知识。这个集合包包含了丰富的教程、实例代码和可能的练习题,是自学或教学的...
"头像集合"指的是一个包含多种风格和类型的头像库,这样的集合通常会包括多种设计元素,如人物、动物、卡通形象、风景等,以满足不同用户的个性化需求。"打包下载"则意味着用户可以一次性获取所有头像,无需逐个下载...
本资源包含的是"Tessdata各语言集合包"以及"Tesseract OCR w64 setup v5.3.0.20221214.exe",这是一款专为Windows 64位系统设计的图形识别软件安装包。Tesseract OCR(Optical Character Recognition,光学字符识别...
fastdfs_client_java._v1.25.tar.gz,fastdfs-nginx-module_v1.16.tar.gz,libfastcommon_v1.01.tar.gz,nginx-1.13.12.tar.gz集合包,减少你去寻找的时间
经典游戏集合25个Unity游戏集合包,经典游戏集合25个Unity游戏集合包,经典游戏集合25个Unity游戏集合包,经典游戏集合25个Unity游戏集合包,经典游戏集合25个Unity游戏集合包,经典游戏集合25个Unity游戏集合包,经典游戏...
本资源"Android+上百实例源码分析以及开源分析+集合打包9"提供了一系列的实战案例和源代码,帮助开发者深入理解Android开发的核心概念,并提升实际操作技能。下面我们将逐一解析这些实例及其涉及的关键知识点。 1. ...
【E8软件集合】是一个专为手机用户设计的软件打包,包含了多个实用的应用程序,旨在提供一站式的手机软件解决方案。这个集合可能涵盖了不同类型的软件,包括但不限于系统工具、社交应用、娱乐软件、生产力工具以及...
这个"javax jar集合包"显然包含了与javax相关的类库,主要目的是为了增强Java应用程序的功能和兼容性。让我们深入探讨一下这个集合包中的两个核心组件:`javax.xml`和`jsr94`。 首先,我们来看`javax.xml`。这是一...
"lamp56集合包"是一个针对Linux环境的软件包集合,主要用于快速搭建LAMP(Linux、Apache、MySQL、PHP)服务器环境。这个压缩包包含了在Linux系统上运行Web服务所需要的关键组件,版本号56指的是Apache、MySQL和PHP的...
【标题】:“广防盗版集合包.rar” 这个标题暗示了我们正在处理的文件是一个压缩包,格式为RAR,其中包含了防止盗版的措施或者工具。RAR是一种常见的文件压缩格式,由RarLab开发,用于存储和传输数据。它通常用于...
"android_studio_theme集合包"显然是一个包含了多种Android Studio主题的资源包,旨在改变Android Studio的界面外观,以满足不同开发者对于工作环境个性化的需求。 主题是IDE的一种视觉样式,它可以改变编辑器的...
《WinRAR v3.50 主题集合包详解》 WinRAR是一款强大的文件压缩与管理工具,深受全球用户的喜爱。v3.50版本在当时是WinRAR的一个里程碑,不仅在功能上有所增强,还引入了丰富的主题元素,使得用户在享受实用功能的...
【Win2003 IIS集合包】是一个针对32位Windows Server 2003操作系统的集成化IIS(Internet Information Services)安装资源。IIS是微软开发的一款用于发布Web服务的应用程序服务器,它提供了多种功能和服务,使得用户...
【标题】"NC57安全补丁集合包" 涉及的是针对NC57(可能是一个特定的软件版本或系统)的安全性更新。在IT领域,安全补丁是用于修复软件中的漏洞或弱点,防止恶意攻击者利用这些漏洞进行非法活动的重要工具。NC57的这...
【标题】:“经典ioc图标集合包” 在软件开发领域,特别是在UI设计和用户界面构建中,图标扮演着至关重要的角色。这里的"经典ioc图标集合包"是一个包含多种IOC(Inversion of Control,控制反转)相关的图标资源的...
"RTX开发安装集合包" 是一个专门为开发者提供的资源包,包含了RTX系统前端和后端的安装程序以及相关的开发指南。RTX,全称Real Time eXchange,是一款即时通讯软件,常用于企业内部通信,提供消息传递、文件共享等...
各种java需要的jar包下载,包括了主流的struts2,spring,还要数据库连接.....给刚入门的朋友提供便利,本人新手,搜寻jar包花费了不少时间,希望能够节省大家的时间,里面的jar包有些乱,要什么包看名字找就行了.