常用有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是非线程安全。
分享到:
相关推荐
tesseract各语言集合包
谭浩强C语言C++集合包,是一个包含多个关于谭浩强C语言,与C++初学者入门的资料集合。
20000个头像集合打包下载 网站/APP/微信/社交/QQ头像 超级真实头像数据 适合随机头像调用
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上百实例源码分析以及开源分析集合打包课程目录:【】Android 上百实例源码分析以及开源分析 集合打包1【】Android 上百实例源码分析以及开源分析 集合打包2【】Android 上百实例源码分析以及开源...
Android_上百实例源码分析以及开源分析_集合打包4
OpenGL海量demo及源码&附带chm手册集合包,原理都是相通的, 学习时,只要掌握原理,不管C++ C# 接口名字基本相通,可以快速学习练习;
E8软件集合E8软件集合E8软件集合E8软件集合
javax jar集合包,javax类,引用包
各种java需要的jar包下载,包括了主流的struts2,spring,还要数据库连接.....给刚入门的朋友提供便利,本人新手,搜寻jar包花费了不少时间,希望能够节省大家的时间,里面的jar包有些乱,要什么包看名字找就行了.
DVWA平台搭建工具插件集合包 注:1、安装phpStudy是有可能会报错让安装VC(压缩包里有点击安装就好) 2、把下载好的DWVA的压缩包,放在C:\phpStudy\PHPTutorial\WWW中(我安装在了C盘) 3、配置DVWA链接数据库,打开...
各个版本的 数据库驱动包 Mysql Sqlserver Oracle 等
tesseract各语言集合包
使用JSON实现数据之间的转换的开发包集合包含依赖包
nginx-1.4.2.tar.gz\nginx源码安装包 openssl-1.0.1c.tar.gz\ssl依赖安装包 pcre-8.34.tar.gz\prce依赖安装包 zlib-1.2.8.tar.gz\zib依赖安装包
VB2008源代码集合包 VB2008源代码集合包 VB2008源代码集合包 VB2008源代码集合包
这是 Win2003 32位 IIS集合包 方便大家使用
集合包包含: python-perf-4.4.213-1.el7.elrepo.x86_64.rpm perf-4.4.213-1.el7.elrepo.x86_64.rpm kernel-lt-doc-4.4.213-1.el7.elrepo.noarch.rpm kernel-lt-headers-4.4.213-1.el7.elrepo.x86_64.rpm kernel-lt-...
WinRAR v3.50 主题集合包.rar