java容器
文章平均质量分 77
E01014165
这个作者很懒,什么都没留下…
展开
-
Comparator接口与Comparable接口的区别
1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collect转载 2016-05-27 16:51:12 · 264 阅读 · 0 评论 -
Java 遍历HashMap并修改(remove)
遍历HashMap的方法有多种,比如通过获取map的keySet, entrySet, iterator之后,都可以实现遍历,然而如果在遍历过程中对map进行读取之外的操作则需要注意使用的遍历方式和操作方法。public class MapIteratorTest { private static Map map = new HashMap(); public st转载 2016-08-10 17:35:18 · 17893 阅读 · 0 评论 -
hashCode与equals的区别与联系
为什么覆盖(不是重载)equals方法一定要覆盖hashCode方法因为如果只覆盖了equals而没有覆盖hashCode, 则两个不同的instance a和b虽然equals结果(业务逻辑上)相等,但却会有不同的hashcode,这样hashmap里面会同时存在a和b,而实际上我们需要hashmap里面只能保存其中一个,因为从业务逻辑方向看它们是相等的. equals方法和ha转载 2016-08-10 17:26:30 · 3813 阅读 · 0 评论 -
Java HashSet详解
HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码: Java代码 public class HashSet extends AbstractSet转载 2016-08-10 16:43:20 · 420 阅读 · 0 评论 -
JAVA HashMap详解
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。 通过 HashMap转载 2016-08-10 15:44:30 · 362 阅读 · 0 评论 -
ConcurrentHashMap源码解析
最近有点想研究下java.util.concurrent 包下的一些类中的实现,在现实中也对这包里的类应用不少,但都没怎么去深入理解,只是听说里面的实现在高并发中有不错的性能。。接下将对里面的几个比较常用的类的源码进行分析。。 ConcurrentHashMap类 研究源码时,我一般喜欢从实际的应用中去一步步调试分析。。这样理解起来容易很多。转载 2016-08-21 11:59:19 · 556 阅读 · 0 评论 -
Java集合-CopyOnWriteArrayList
CopyOnWriteArrayList是ArrayList 的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。 这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法在创建迭代器时使用了对转载 2016-08-21 11:42:27 · 398 阅读 · 0 评论 -
Java集合---ConcurrentHashMap原理分析
转自:http://www.cnblogs.com/ITtangtang/p/3948786.html 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonwrite,qu转载 2016-08-21 11:40:05 · 404 阅读 · 0 评论 -
Java容器小结和使用示例
import java.lang.String;import java.util.*;public class JAVAContainer { // Interfaces: // Interface Iterator: hasNext(), next(), remove() ---- 所有容器通用的遍历方式。 // Interface Collection:add转载 2016-07-16 10:20:01 · 304 阅读 · 0 评论 -
Java容器类型使用总结
最近抽空把java.lang下面常用的那些容器类型(数据结构)复习了一下,这些东西是基础,平时使用的时候也可以很容易查得到,有些方法大概知道,但是总是弄混,如果可以记住那些重要方法,并且能够熟练使用的话,还是可以让编码过程变得容易很多。另外一个是实现机制,对于常用数据结构的实现机制,应该说是必须要熟知的。另外,并发容器我之前整理过,放在这篇文章里。Queueadd和offe转载 2016-07-16 10:18:16 · 797 阅读 · 0 评论 -
ArrayDeque
java.util.ArrayDeque 类提供了可调整大小的阵列,并实现了Deque接口。以下是关于阵列双端队列的要点:数组双端队列没有容量限制,使他们增长为必要支持使用。它们不是线程安全的;如果没有外部同步。不支持多线程并发访问。null元素被禁止使用在数组deques。它们要比堆栈Stack和LinkedList快。原创 2016-06-08 11:33:55 · 370 阅读 · 0 评论 -
topKFrequent(PriorityQueue实现)
import java.util.*;public class Solution { public List topKFrequent(int[] nums, int k) { HashMap map = new HashMap(); for(int num : nums) { if(map.get(num) != null) { map.pu原创 2016-05-27 17:38:54 · 679 阅读 · 0 评论 -
PriorityQueue示例
PriorityQueue这种数据结构支持按照优先级取出里面的元素。这是和其它常用数据结构,比如 ArrayList, Queue, Stack等最大的区别。因为要支持优先级,而heap具有类似的结构,所以,PriorityQueue一般都是基于HEAP实现的。(也可以用其它数据结构实现,但是各种复杂度会有不同。)基于HEAP实现的PriorityQueue复杂度分析:add(E转载 2016-05-27 17:08:36 · 311 阅读 · 0 评论 -
HashMap遍历的两种方式
第一种: Java代码 Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key =转载 2016-08-10 17:43:46 · 358 阅读 · 0 评论