`
arual
  • 浏览: 10774 次
社区版块
存档分类
最新评论

hashMap 笔记笔记笔记

    博客分类:
  • java
 
阅读更多
  1. HashMapMap基于散列表的实现(它取代了Hashtable)。插入和查询键值对的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器的性能。
  2. LinkedHashMap:类似于HashMap,但是迭代遍历它时,取得键值对的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它使用链表维护内部次序。
  3. TreeMap:基于红黑树的实现。查看键值树时,它们会被排序(次序由ComparableComparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
  4. ConcurrentHashMap:一种线程安全的Map

 

http://blog.csdn.net/xin_jmail/article/details/24431835

 

hashtablehashmapConcurrentHashMaptreemap的区别

 

 

如果键被用于HashMap, 那么它必须还具有恰当的hashCode()方法和equal() 方法。 如果键被用于TreeMap, 那么它必须实现Comparable

 

 

Object.equals() 只是比较对象的地址, object.hashCode() 默认是使用对象的地址计算散列码。

 

 

synchronized 是java为防止资源冲突提供的内置支持。当任务要执行被synchronized关键字保护的代码片段时, 它将检查锁是否可用,然后获取锁,执行代码,释放锁。

使用synchronized时候,如果程序运行出错,就会抛出异常,但是不会去做清理工作。使用ReentrantLock允许你尝试着获取但最终未获取的锁,这样如果其他人已经获得这个锁,那你就可以离开去执行别的事情,而不是等待直到这个锁被释放。

 

ConcurrentHashMapJava 5中支持高并发、高吞吐量的线程安全HashMap实现。

实现原理 

 

锁分离 (Lock Stripping)

 

ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

 

 

http://alex09.iteye.com/blog/539545

 

http://www.iteye.com/topic/344876

 

 

 

关于Hash表的基础数据结构,这里不想做过多的探讨。Hash表的一个很重要方面就是如何解决hash冲突,ConcurrentHashMapHashMap使用相同的方式,都是将hash值相同的节点放在一个hash链中。与HashMap不同的是,ConcurrentHashMap使用多个子Hash表,也就是段(Segment)

分享到:
评论

相关推荐

    马士兵老师HashMap学习笔记

    《马士兵老师HashMap学习笔记详解》 HashMap是Java编程语言中常用的一种数据结构,它提供了键值对(key-value pair)的存储功能,是基于哈希表实现的。马士兵老师的HashMap学习笔记深入剖析了这一核心组件的工作...

    解析HashMap.md

    黑马程序员HashMap的笔记,面试必问,笔记很好,内容言简意赅,看完收获很多,希望能帮助大家的学习

    学习笔记:三数组实现的HashMap

    "学习笔记:三数组实现的HashMap"这篇博客文章可能讨论了一种非标准但有趣的HashMap实现,使用了三个数组来代替标准的哈希表结构。这里我们将深入探讨这种三数组实现HashMap的原理和可能的优势。 1. **基本概念**:...

    达内笔记(自己整理完整)

    3. 集合框架:介绍ArrayList、LinkedList、HashSet、HashMap等集合类的使用和原理。 4. 异常处理:讲解如何捕获和处理运行时错误,以及异常类的层次结构。 5. 文件与流:涉及I/O流的操作,如读写文件、数据传输等。 ...

    javase6 学习笔记(李兴华培训课堂笔记所有.)

    4. **集合框架**:Java SE 6中的集合框架是一个强大的工具集,包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。它们为存储和操作对象提供了灵活的方式。 5. **IO流**:Java的IO流...

    达内Java_笔记整理.rar_Java 达内笔记_Java笔记_java 笔记_笔记_达内

    这部分笔记可能涉及File类、IOException、try-catch-finally语句以及ArrayList、LinkedList、HashMap等集合类的使用。 此外,笔记可能还会涵盖线程与并发,这是Java的一个强项。学习者将了解到线程的基本概念、同步...

    李兴华java笔记

    3. **集合框架**:Java集合框架是处理对象集合的重要工具,包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。理解它们的特性和使用场景对于编写高效代码非常有帮助。 4. **IO流**...

    非常好的java笔记适合初学者

    最后,笔记可能还会涵盖集合框架,包括ArrayList、LinkedList、HashMap等常用容器,以及泛型、迭代器等概念。这部分内容对于组织和操作数据至关重要。 总的来说,这份"非常好的java笔记"是初学者学习Java编程的理想...

    Java基础 学习笔记 Markdownr版

    2. 集合:在13集合.md中,详细讲解了Java集合框架,包括ArrayList、LinkedList、HashSet、HashMap等基本集合类的使用,以及List、Set、Map接口的特性。此外,还可能涉及泛型的概念,泛型(14泛型.md)提高了代码的...

    Java学习笔记——良葛格

    最后,笔记可能会涵盖一些实用的Java库,如集合框架(ArrayList、LinkedList、HashMap等)、IO库和JDBC(Java Database Connectivity)用于数据库交互。 总的来说,"良葛格的Java学习笔记"是一个全面而详尽的入门...

    黑马程序员Javase笔记

    Map是一个键值对的数据结构,可以嵌套使用,例如`HashMap, HashMap, String>>`。同时,可以使用匿名内部类创建自定义的比较器来定制排序规则。 总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、...

    韩顺平java笔记完整版.zip(无笔记,只是代码)

    3. **集合框架**:如ArrayList、LinkedList、HashMap、HashSet等数据结构的使用,以及泛型的理解和应用。 4. **异常处理**:学习如何捕获和处理程序运行时可能出现的错误。 5. **输入/输出流**:理解I/O流的概念,...

    java基础的详细案例笔记

    8. **集合框架**:如ArrayList、LinkedList、HashSet、HashMap等,这些都是存储和操作数据的重要工具,笔记会介绍它们的特性和使用场景。 9. **函数式编程**:Java 8引入了Lambda表达式和Stream API,这使得Java...

    java学习笔记markdown

    3. **集合框架**:详细解释ArrayList、LinkedList、HashSet、HashMap等集合类的使用,以及List、Set、Map接口。集合框架是Java中用于存储和管理对象的重要工具。 4. **IO流**:介绍输入/输出流的概念,包括文件操作...

    达内Java项目云笔记12天完整源码cloudnote_day12_all.zip

    1. **Java基础**:此项目的基础是Java编程语言,包括面向对象编程概念(如类、对象、继承、多态和封装)、异常处理、集合框架(如ArrayList、LinkedList、HashMap等)以及IO流等。 2. **Spring框架**:作为Java企业...

    狂神说笔记内容.zip

    9. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等集合类的使用,以及迭代器的运用。 10. **IO流**:了解输入输出流的概念,字符流与字节流的区别,以及缓冲区的概念。 11. **多线程**:线程的创建方式...

    非常详细javaSE学习笔记.rar

    5. **集合框架**:ArrayList,LinkedList,HashMap,HashSet等容器的使用,以及它们之间的区别和选择。此外,接口如List,Set,Map的使用和实现也会涉及。 6. **输入输出(I/O)**:包括System.in, System.out....

    宋红康java笔记.rar

    4. **集合框架**:Java集合框架包括List、Set、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。学习如何在不同场景下选择合适的集合类型,并理解它们的特性及操作方法。 5. **IO流**:Java的...

    李兴华核心技术笔记 mldn

    4. **集合框架**:Java集合框架是存储和操作对象的重要工具,笔记可能涉及ArrayList、LinkedList、HashMap、HashSet等容器的使用。 5. **输入输出(I/O)**:Java的I/O流系统用于读写文件,网络通信等,笔记可能...

    韩顺平java从入门到精通笔记完整版

    进一步,笔记深入探讨了Java集合框架,包括ArrayList、LinkedList、HashSet、HashMap等数据结构的使用,以及泛型、迭代器和比较器的概念。这些内容对于处理复杂的数据存储和操作至关重要。此外,笔记还会讲解IO流和...

Global site tag (gtag.js) - Google Analytics