java 集合总结
来源:互联网 发布:mysql my.ini配置下载 编辑:程序博客网 时间:2024/05/17 04:48
结构:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
区别:
类
是否有序
是否线程安全
是否允许重复
是否允许空值
常用情景
描述
总结
LinkedList
有序
否
是
是
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
LinkedList基于双向链表的数据结构
若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数 据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。
ArrayList
有序
否
是
是
对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针
ArrayList是实现了基于动态数组的数据结构
Vector
有序
是
是
是
如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.如过在集合中使用数据量比较大的数据,用vector有一定的优势
Stack
有序
Stack继承自Vector,实现一个后进先出的堆栈
Set
否
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素
HashTable
无序
线程安全
是
否
任何作为key的对象都必须实现hashCode和equals方 法,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相 同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如 果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希 表的操作
HashMap
无序
线程安全
是
是
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap 的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低
WeakHashMap
WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收
TreeMap
HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)
这里在解释下ArrayList 和 linkedList区别
ArrayList 从名字中可以看出是基于Array实现的,Array效率很高可是大小固定,并且可以通过下标index直接获取元素,不用一个个遍历,所有ArrayList做随机访问效率高些,若果是频繁插入、删除操作,ArrayList就需要频繁的创建临时Array,删除选中的元素,再把删除后的元素放到新的Array中去,插入同样如此,所以效率较LinkedList低。
LinkedList从名字中可以看出是基于Link实现(链表),大家知道链表中有一个指针,取元素是通过指针当前位置然后向左或者向后一个一个查找的,所以随机访问慢,但是如果是频繁插入元素,或者删除某个元素的效率会高些,因为这时我只用移动下指针就可以了。
- java集合------List集合总结
- java集合------Map集合总结
- Java集合--Set集合总结
- java集合类总结
- Java集合框架总结
- java集合的总结!
- java集合类总结
- JAVA集合类总结
- Java集合总结
- java集合类总结
- java集合类总结
- java集合类总结
- JAVA集合类总结
- Java集合总结
- java集合框架总结
- Java集合框架总结
- Java集合容器总结
- java集合类总结
- Unity 捕获IronPython脚本错误
- Web Services服务之间调用
- apache FileUtils 和 IOUtils 工具类 改写普通文件读写方式 提高效率
- 老毛桃U盘工具,自由更换系统,方便快捷,全面兼容新旧配置,自制引导盘和光驱无法更新系统,老毛桃引导盘用户可以自由替换系统,支持GHOST与原版系统安装,方便快捷,自动安装。支持双显卡笔记本的引导进PE
- 工作那些事(三十)如何提升个人能力
- java 集合总结
- 求1到N的所有整数中“1”的个数
- Uva-10972-RevolC FaeLoN
- 汇集下载频道上半年最受欢迎资源,先更新移动开发,后续补充中~~
- QT前序
- curl获取的数据不对。
- php 环境搭建
- 使用powerDesign15导出数据库的的物理模型
- Android平台下hook框架adbi的研究(下)