`

java 散列表和线程安全

    博客分类:
  • java
阅读更多

java优化编程-散列表类:

线程安全的散列表类:
java.util.Vector/java.util.Hashtable
非线程安全的散列表类:
java.util.ArrayList/java.util.HashMap
在需要做线程同步以及要求线程安全的场合,开发人员应尽量使用线程安全的散列表类;
在不需要线程安全的场合,为了提高系统性能,开发人员应尽量选用非线程安全的散列表类;
因为线程安全的散列表会将原本可以并行处理的多线程进行排队,将转化为串行处理,从而导致系统性能下降。

ArrayList类可以通过下列方法标识成线程安全的类:
List list = Collections.synchronizedList(new ArrayList());

 

-----------------------------------------

java优化编程-ArrayList与LinkedList:

ArrayList(数组对象)与LinkedList(链表对象)是java中的两个专门用来处理数据元素列表的类。
这两个类在性能特性方面存在较大差别,差别源于它们不同的存储结构。
ArrayList是通过内部数据结构Object[]实现的;
而LinkedList是通过将一系列的内部记录连接在一起实现的。
它们性能的差异使它们拥有各自不同的适用场合。
当需要在某个位置添加一个新元素时,应该使用LinkedList来提高系统性能。
因为当在ArrayList的某个位置添加一个新元素时,系统会把此位置之后的所有元素向后推移,这个动作相当耗时。
而在LinkedList的某个位置添加一个新元素时,系统只需给此新元素添加一个与相邻对象的引用连接,这个动作相当廉价。
ArrayList适用在查找某个已存在元素的场合。
--------------------------------------------------------

java优化编程-瞬间值:

在做远程方法调用(RMI)应用开发时,将传递对象中不需要的属性标记为“瞬间值”,使其不被传递,来节约网络开销,
提高传输速度,提高系统性能,并且还可以节约调用端运行环境的内存资源。

----------------------------------------------------------------------------------------

设置ArrayList初始化容量: 

如果有一个很大的数组,并且你已经预料到此数组会变的异常庞大,那么这里给出一个方法用来提高添加新元素的速度,做好初始化操作。
调用ArrayList对象中的ensureCapacity(int size)方法;

============================================

 

 

分享到:
评论

相关推荐

    java入门,面试圣经

    在数据结构方面,Java提供了多种用于存储和检索数据的方式,如堆(Heap)、栈(Stack)、队列(Queue)、链表(LinkedList)、树(如TreeSet、TreeMap)、散列表(HashTable)等。这些数据结构各有优劣,根据不同的...

    java集合类面试题总结

    HashMap 和 Hashtable 都是 Java 中的散列表实现,但它们有所不同。HashMap 允许一个 null 键和多个 null 值,而 Hashtable 不允许 null 键和 null 值。Hashtable 还是同步的,这意味着它是线程安全的,但这也使得它...

    2.Java7_8+中的+HashMap+和+ConcurrentHashMap+全解析1

    在Java编程语言中,HashMap和ConcurrentHashMap是两种常用的散列表数据结构,主要用于存储键值对。本文将对这两个类在Java 7和8中的实现进行深入解析,尤其是它们在并发环境下的行为和优化。 首先,我们来看Java 7...

    Java面试题.doc,Java面试题.doc

    HashMap 是 Java 中常用的非同步散列表,它允许线程非安全的访问,不保证在多线程环境下的数据一致性。HashMap 在并发访问时可能会出现数据不一致的问题,因为它不进行任何同步控制。在单线程环境下,HashMap 的性能...

    龙果学院java并发编程完整视频

    - `ConcurrentHashMap`是一种高性能的线程安全散列表,它通过分割技术来减少锁的竞争。 - `CopyOnWriteArrayList`通过在修改时创建新数组的方式来保证线程安全,适用于读多写少的场景。 ### 实战案例分析 为了更...

    Java 项目开发中处理大数据的方法.docx

    此外,使用散列表如HashMap可以加速查找操作。 利用多线程:Java提供了多线程支持,可以将数据处理任务分配给多个线程并行执行。这可以大大提高数据处理的速度。注意,在使用多线程时需要考虑线程安全的问题,如...

    21天学通Java 6(第5版) 源代码

    第2周介绍Java类库,包括向量、堆栈、映射、散列表和位组等数据结构,以及Swing组件、布局管理器和Java Web Start等;第3周介绍高级主题,包括输入和输出、对象序列化、通过Internet进行通信、使用数据库、XML、Web...

    动力节点Java基础301集_史上最全的Java基础教程

    1. **数据结构**:教程详细介绍了单项链表、双向链表、哈希表(散列表)和二叉树这四种重要的数据结构。单项链表和双向链表分别阐述了它们的结构特点、插入删除操作;哈希表强调了它的快速查找能力,而二叉树则讨论...

    JAVA中常用的数据结构

    HashMap类使用散列表来存储键值对,查找和操作的效率非常高。HashMap类是线程非同步的(asynchronized),因此在多线程环境下需要小心使用。 SortedMap接口 SortedMap接口继承自Map接口,是一个有序的Map接口。...

    JAVA性能优化.PPT

    线程安全的散列表(如`Vector`和`HashTable`)在多线程环境中同步操作,但效率较低。对于性能要求高的场景,可以考虑使用非线程安全但更高效的`ArrayList`和`HashMap`等。 5. **数据流**: - 数据流处理涉及到如何...

    Java中的几个HashMapConcurrentHash

    在Java编程语言中,`HashMap`和`ConcurrentHashMap`是两种非常重要的数据结构,它们都属于散列表,用于存储键值对数据。虽然两者在功能上相似,但它们的设计和使用场景却有着显著的区别。 首先,我们来讨论`HashMap...

    Java2实用教程.rar

    13 6散列表 13 7向量 习题 第14章图形与图像 14 1绘制文本 14 2绘制基本图形 14 3建立字体 14 4清除 14 5Java2D 14 6图形的布尔运算 14 7绘制钟表 14 8绘制图像 14 9制作JPG图像 14 10XOR绘图模式 14 11打印图形 ...

    Java面试题大全2023版.docx

    StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程...

    达内java课程笔记

    2. 散列表Map:讲解了HashMap的使用及其特点。 3. 集合框架:讨论了Java集合框架的组成部分和层次结构。 4. Java泛型:介绍了泛型的概念和泛型集合的使用。 5. 集合的迭代:讲解了如何遍历集合。 6. 集合工具类与...

    2023最新Java面试题

    HashMap 和 HashTable 是Java中的两种散列表数据结构,用于存储键值对。HashMap 是非线程安全的,支持null键和值,而HashTable是线程安全的,不允许null键和值。此外,HashMap的性能通常优于HashTable,因为它没有...

    整理的Java-EE面试总结.pdf

    在Map接口方面,HashMap是基于散列表实现的,提供快速的插入和查找性能,但不保证元素的顺序;而Hashtable是继承自Dictionary类,它也是线程安全的。TreeMap则是基于红黑树的,可以实现元素的排序。 对于集合框架的...

    Java软件结构 设计和使用数据结构

    最后,"ch15 Code"可能涉及到特殊的数据结构,如堆栈、队列和双端队列(Deque)的高级用法,以及并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList,它们在多线程环境中提供了安全的数据共享。 总的来说,这...

    Java集合框架.pdf

    HashMap基于散列表实现,允许将null作为键和值。TreeMap基于红黑树实现,可以保持键的排序顺序。HashTable是一种古老的线程安全的Map实现,但在多线程环境下,使用ConcurrentHashMap替代HashTable更为合适。 除了...

    Java面试常用数据结构与算法

    3. **散列表(HashMap)**:散列表是一种基于哈希函数的高效数据结构,用于存储键值对。它的插入、删除和查找操作平均时间复杂度为O(1)。面试时可能涉及哈希冲突、负载因子、扩容策略等知识点。 4. **栈**:栈是一...

Global site tag (gtag.js) - Google Analytics