随笔分类 -  Java集合类

CocurrentHashMap和HashTable区别分析
摘要:集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅。在tiger之前,我们使用得最多的数据结构之一就是HashMap和Hashtable。大家都知道,HashMap中未进行同步考虑,而Hashtable则使用了synchronized,带来的直接影响 阅读全文

posted @ 2013-11-18 10:27 heartstage 阅读(1917) 评论(0) 推荐(0)

HashMap和HashSet的区别
摘要:HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Se 阅读全文

posted @ 2013-11-18 10:25 heartstage 阅读(217) 评论(0) 推荐(0)

深入Java集合学习系列:HashMap的实现原理
摘要:1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表的数组”的数据结构,每个元素存放链表头结点的数组,即数组和链表的结合体。.. 阅读全文

posted @ 2013-11-12 23:03 heartstage 阅读(248) 评论(0) 推荐(0)

HashSet、LinkedHashSet和TreeSet
摘要:关键技术:HashSet采用散列函数对元素进行排序,是专门为快速查询而设计的。存入HashSet的对象必须定义hashCode方法。TreeSet采用红黑树的数据结构进行排序元素,使用它可以从Set中提取有序(升序或者降序)的序列。需要注意的是,存入自定义类时,TreeSet需要维护元素的存储顺序,因此自定义类要实现Comparable接口并定义compareTo方法。LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素插入的次序,在使用迭代器遍历Set时,结果会按元素插入的次序显示。关键技术: HashSet采用散列函数对元素进行排序,是专门为快速查询而设计的。存... 阅读全文

posted @ 2013-11-06 00:16 heartstage 阅读(447) 评论(0) 推荐(0)

构建更好的HashMap
摘要:在7月份的那期 Java理论与实践(“并发集合类”)中,我们简单地回顾了可伸缩性的瓶颈,并讨论了怎么用共享数据结构的方法获得更高的并发性和吞吐量。有时候学习的最好方法是分析专家的成果,所以这个月我们将分析 Doug Lea 的 util.concurrent 包中的 ConcurrentHashMap 的实现。JSR 133 将指定 ConcurrentHashMap 的一个版本,该版本针对 Java 内存模型(JMM)作了优化,它将包含在 JDK 1.5 的 java.util.concurrent 包中。util.concurrent 中的版本在老的和新的内存模型中都已通过线程安全审核。针 阅读全文

posted @ 2013-10-28 11:33 heartstage 阅读(331) 评论(0) 推荐(0)

高并发下的HashMap问题
摘要:http://www.oschina.net/question/16_2398 阅读全文

posted @ 2013-10-28 10:31 heartstage 阅读(225) 评论(0) 推荐(0)

HashMap之equals和hashCode小陷阱
摘要:先以一段代码开始这篇blog。view sourceprint?01public class Name {0203private String first; //first name04private String last; //last name0506public String getFirst() {07return first;08}0910public void setFirst(String first) {11this.first = first;12}1314public String getLast() {15return last;16}1718public void s 阅读全文

posted @ 2013-10-28 10:28 heartstage 阅读(355) 评论(0) 推荐(0)

HashSet如何排序
摘要:方法一:把HashSet保存在ArrayList里,再用Collections.sort()方法比較[java] view plaincopyprint?privatevoiddoSort(){finalHashSetva=newHashSet();va.add(2007111315);va.add(2007111314);va.add(2007111318);va.add(2007111313);finalListlist=newArrayList();for(finalIntegervalue:va){list.add(value);}Collections.sort(list);Syst 阅读全文

posted @ 2013-10-26 16:47 heartstage 阅读(7862) 评论(0) 推荐(0)

java中list、set和map 的区别
摘要:List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap. List的功能方法 实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法 阅读全文

posted @ 2013-10-26 14:43 heartstage 阅读(213) 评论(0) 推荐(0)

Java 集合类
摘要:集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│└Stack└Set└Map├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 所有... 阅读全文

posted @ 2013-10-15 15:36 heartstage 阅读(164) 评论(0) 推荐(0)

导航