java集合类2018-05-13

HashMap和Hashtable ( 注意table是小写的t,搞不懂为什么要这样,老是会写错。。。)首先来看HashMap和HashTable,这两兄弟经常被放到一起来比较,那么它们有什么不一样呢?a.HashMap不是线程安全的;HashTable是线程安全的,其线程安全是通过Sychronize实现。b.由于上述原因,HashMap效率高于HashTable。c.HashMap的键可以为null,HashTable不可以。d.多线程环境下,通常也不是用HashTable,因为效率低。HashMap配合Collections工具类使用实现线程安全。同时还有ConcurrentHashMap可以选择,该类的线程安全是通过Lock的方式实现的,所以效率高于Hashtable。

数组,链表,哈希表。各有优劣,顺便提一下,数组连续内存空间,查找速度快,增删慢;链表充分利用了内存,存储空间是不连续的,首尾存储上下一个节点的信息,所以寻址麻烦,查找速度慢,但是增删快;哈希表呢,综合了它们两个的有点,一个哈希表,由数组和链表组成。假设一条链表有1000个节点,现在查找最后一个节点,就得从第一个遍历到最后一个;如果用哈希表,将这条链表分为10组,用一个容量为10数组来存储这10组链表的头结点(a[0] = 0 , a[1] = 100 , a[2] = 200 …)。这样寻址就快了。\

  ArrayList:采用的是数组的方式进行存储数据的,查询和修改速度快,但是增加和删除速度慢;线程是不同步

        LinkedList:采用的是链表的方式进行存储数据的,查询和修改速度慢,但是增加和删除速度快

        Vector:也采用的是数组的方式进行存储的,Vector在java1.0以前用,但是ArrayList是在java1.2版本后使用的,线程是同步的,效率相比ArrayList来说慢一点;同时Vector查询数据有迭代器,有枚举,有get(int index),有indexOf(int index)四种方式,而ArrayList却没有枚举

ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,631评论 1赞 14
  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 2,133评论 0赞 13
  • 高顺天很惊慌,但是,他却尽量使自己保持冷静。他认为焦急并不能解决问题。 可他又是那么的想要帮助陈百合。 那么应该怎...
    旋转世界阅读 262评论 4赞 1
  • 文/王双凤 前几天,带孩子一起去郊外游玩,在一个水渠的旁边,一大片郁郁葱葱的植物引起了我的注意:紫色的藤条上...
    王双凤阅读 171评论 0赞 6

友情链接更多精彩内容