随笔分类 - java集合/数据结构
摘要:出处: 不了解布隆过滤器?一文给你整的明明白白 海量数据处理以及缓存穿透这两个场景让我认识了布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它! 下面我们将分为几个方面来介绍
阅读全文
摘要:问:如何决定使用 HashMap 还是 TreeMap? 介绍 TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。 Has
阅读全文
摘要:1:BlockingQueue的继承关系 java.util.concurrent 包里的 BlockingQueue是一个接口, 继承Queue接口,Queue接口继承 Collection BlockingQueue >Queue-->Collection BlockingQueue即阻塞队列,
阅读全文
摘要:一、DelayQueue是什么 DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。 二、DelayQueue能做什么
阅读全文
摘要:可以提前读这篇文章:多读少写的场景 如何提高性能 写入时复制(CopyOnWrite)思想 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同
阅读全文
摘要:fail-fast机制简介 什么是fail-fast fail-fast 机制是java集合(Collection)中的一种错误机制。它只能被用来检测错误,因为JDK并不保证fail-fast机制一定会发生。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线
阅读全文
摘要:阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会进行展开,感兴趣的读者请自行查找相关资料。 Java7 HashMa
阅读全文
摘要:Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。 根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度
阅读全文
摘要:console结果: list = [a, b, a, c, d, e]newList = [a, b, c, d, e] list = [a, b, a, c, d, e]newList = [a, b, c, d, e] list = [a, b, a, c, d, e]newList = [d
阅读全文
摘要:一、java.util.Arrays.asList() 的一般用法 List 是一种很有用的数据结构,如果需要将一个数组转换为 List 以便进行更丰富的操作的话,可以这么实现: String[] myArray = { "Apple", "Banana", "Orange" }; List<Str
阅读全文
摘要:一. 基本用法LinkedHashMap是HashMap的子类,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。LinkedHashMap支持两种顺序插入顺序 、 访问顺序 1:插入顺序:先添加的在前面,后添加的在后面。修改操作不影响顺序 2:访问顺序:所谓访问
阅读全文
摘要:原文地址:http://blog.csdn.net/ghsau/article/details/16890151 实现原理:用一个数组来存储元素,但是这个数组存储的不是基本数据类型。HashMap实现巧妙的地方就在这里,数组存储的元素是一个Entry类,这个类有三个数据域,key、value(键值对
阅读全文
摘要:遍历HashMap的方法有多种,比如通过获取map的keySet, entrySet, iterator之后,都可以实现遍历,然而如果在遍历过程中对map进行读取之外的操作则需要注意使用的遍历方式和操作方法。 上面代码的输出结果为 通过上面的输出可以发现第一个偶数key元素已经被成功remove,异
阅读全文
摘要:1:遍历List 同时 remove 元素,出现java.util.ConcurrentModificationException错误 API中此异常的解释:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 原因: Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁
阅读全文
摘要:以上是jdk1.7的描述,结论如下: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长; ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList
阅读全文
摘要:java数组的拷贝四种方法:for、clone、System.arraycopy、Arrays.copyof 先看看System.arraycopy()的声明: src - 源数组。 srcPos - 源数组中的起始位置。 dest - 目标数组。 destPos - 目标数据中的起始位置。 len
阅读全文
摘要:1:Collection和Map接口的几个主要继承和实现类 1.1 Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些
阅读全文