集合框架
文章平均质量分 94
Q蛋黄酱
这个作者很懒,什么都没留下…
展开
-
HashSet,TreeSet和LinkedHashSet的区别
Set接口 Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。 Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象。 HashSet HashSet有以下特点 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元转载 2017-03-28 20:29:51 · 234 阅读 · 0 评论 -
TreeSet类的排序问题
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。 1、自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。(比较的前提:两个对象的类型相同)。 java提供了一个Comparable接口,该接口里定义了一个compa转载 2017-08-20 16:15:14 · 309 阅读 · 1 评论 -
Java集合框架源码解析-TreeSet
概要 这一章,我们对TreeSet进行学习。 我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet。内容包括: 第1部分 TreeSet介绍 第2部分 TreeSet数据结构 第3部分 TreeSet源码解析(基于JDK1.6.0_45) 第4部分 TreeSet遍历方式 第5部分 TreeSet示例 转载请注明出处:http:转载 2017-08-20 15:53:06 · 345 阅读 · 0 评论 -
Java集合框架源码解析-HashSet及LinkedHashSet
Java容器类的用途是“保存对象”,分为两类:Map——存储“键值对”组成的对象;Collection——存储独立元素。Collection又可以分为List和Set两大块。List保持元素的顺序,而Set不能有重复的元素。 本文分析Set中最常用的HashSet类,并简单介绍和对比LinkedHashSet。 首先对Set接口进行简要的说明。 存原创 2017-08-08 17:29:44 · 291 阅读 · 0 评论 -
Java集合框架源码解析-LinkedList
LinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的。基于链表也决定了它在随机访问方面要比ArrayList逊色一点。 除此之外,LinkedList还提供了一些可以使其作为栈、队列、双端队列的方法。这些方法中有些彼此之间只是名称的区别,以使得这些名字在特定的上下文中显得更加的合适。原创 2017-08-08 17:10:04 · 210 阅读 · 0 评论 -
Java集合框架源码解析-ArrayList
由上图可知,List接口继承自Collection接口,但此外,List接口还扩展了很多Collection接口中没有的方法,如下图所示 ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小......而ArrayList则实现了List接口,具体实现代码如下, [java] view pl原创 2017-08-08 16:39:46 · 364 阅读 · 0 评论 -
Java集合框架综述
集合框架(collections framework) 首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。Java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦。 其实说白了,可以把一个集合看成一个微型数据库,操作不外乎“增删改查”四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这转载 2017-08-08 16:21:10 · 193 阅读 · 0 评论 -
Java集合——HashMap(四)扩容机制——resize()
HashMap的扩容机制---resize() 虽然在hashmap的原理里面有这段,但是这个单独拿出来讲rehash或者resize()也是极好的。 什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值(知道这个阈字怎么念吗?不念fa值,念yu值四声)---即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。 扩容(resize)就是重新转载 2017-06-09 16:29:48 · 14194 阅读 · 5 评论 -
Java集合——HashMap原理及要点(一)
前言 HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。下面就来分析HashMap的存取。 定义 HashMap实现了Map接原创 2017-05-21 16:43:32 · 325 阅读 · 0 评论 -
Java集合——HashMap多线程死循环问题
问题的症状 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问题在测试环境里可能很难重现。转载 2017-05-21 21:13:54 · 401 阅读 · 0 评论 -
Java集合——HashMap原理及要点(二)
前言在HashMap原理及要点(一)中,提及了这么两个重要的基本概念: 初始容量(initialCapacity,整型数据) 加载因子(也称为负载因子, loadFactor,浮点类型数据) 这篇文章,将对这两个概念作出详细说明。概述 对于 HashMap 及其子类而言,它们采用 Hash 算法来决定集合中元素的存储位置。当系统开始初始化 HashMap 时,系统会创建一个长度为 capacity原创 2017-05-21 17:08:19 · 359 阅读 · 0 评论 -
Java并发编程:并发容器之CopyOnWriteArrayList(转载)
Java并发编程:并发容器之CopyOnWriteArrayList(转载) Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个转载 2017-04-17 20:40:42 · 281 阅读 · 0 评论 -
Java集合---ConcurrentHashMap原理分析
Java集合---ConcurrentHashMap原理分析 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的Concurr转载 2017-04-17 17:45:13 · 227 阅读 · 0 评论 -
Java集合框架-安全失败与快速失败
一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的原创 2017-08-29 16:15:29 · 505 阅读 · 0 评论