随笔分类 - Java核心 / 集合
摘要:Java 7 - TreeSet & TreeMap 总体介绍 前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。因此本文将重点分析TreeMap。 Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序
阅读全文
摘要:上篇文章讲了HashMap。HashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。 大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。Has
阅读全文
摘要:在Hashmap中它与其他后处理方法都是空实现: // Callbacks to allow LinkedHashMap post-actions void afterNodeAccess(Node<K,V> p) { } void afterNodeInsertion(boolean evict)
阅读全文
摘要:hashMap在Java7和java8中的区别,底层数据结构,如何处理哈希冲突即链表怎么实现,头插法为什么会导致链表成环,尾插法为什么不会,resize的大致过程,hashMap的主要参数,为什么它的容量是2的次幂,hashMap的增删改查大致过程,为什么要同时实现key的equals和hashCo
阅读全文
摘要:前置知识: 哈希桶数组(Node数组,节点数组): 在Java1.8中有一个非常重要的哈希桶数组Node<K,V>[] table; jdk1.7中使用Entry来代表每个 HashMap 中的数据节点,jdk8 中使用 Node,基本没有区别,数组元素都是有 key,value,hash 和 ne
阅读全文
摘要:哈希表原理(hashTable):数组+链表 哈希表是一种根据关键字key来访问值value的一种数据结构。 它通过把key值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表 1、Hash主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂
阅读全文
摘要:set接口 HashSet里面有一个HashMap(适配器模式)。 Set的接口和他的实现类都是基于对应Map的来实现,他的存在是为了我们只需要进行对单一数据操作来保证数据不重复等特点的使用的。 存储一组唯一,无序的对象,最多存储一个null值 实现类: HashSet、LinkedHashSet和
阅读全文
摘要:前面以Java ArrayDeque为例讲解了Stack和Queue,其实还有一种特殊的队列叫做PriorityQueue,即优先队列。优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)。这里牵涉到了大小关系,元素大小的评判可
阅读全文
摘要:Vector和stack Vector:Vector的底层与ArrayList类似.都是以动态数组的方式进行对象的存储 Vector与ArrayList的区别在于Vector是线程同步操作安全的,并发安全保证 Vector很多对外的方法都用Synchronized关键字进行修饰,所以通过vector
阅读全文
摘要:简介: LinkedList 集合底层是一个双向链表结构,具有增删快,查询慢的特点,内部包含大量操作首尾元素的方法。适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用。 链表结构的节点新增、删除都非常简单,仅仅把前后节点的指向修改下就好了,所以 LinkedList 新增和删除速度很快。
阅读全文
摘要:java.util.Arrays.asList() List 是一种很有用的数据结构,如果需要将一个数组转换为 List 以便进行更丰富的操作的话,可以这么实现: String[] myArray = { "Apple", "Banana", "Orange" }; List<String> myL
阅读全文
摘要:fail-fast机制 fail-fast 机制是java集合(Collection)中的一种错误机制。它只能被用来检测错误,因为JDK并不保证fail-fast机制一定会发生。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历
阅读全文
摘要:List接口: ● 这里我用的JDK8 ● List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引,它继承Collection接口,可以定义一个允许重复的有序集合 ● List接口的特点: 1、有索引(下标) 2、有顺序 3、能重复 ● 实现List接口的集合有: ○ ArrayList、
阅读全文
摘要:前置知识: 什么是算法和数据结构: 算法:解题思路 ● 有设计解决的具体的流程,可以解决具体问题 ● 衡量算法优劣指标:时间复杂度、空间复杂度 数据结构:组织管理数据的结构 在计算机的缓存,内存,硬盘 是按照什么结构来组织管理我们的数据管理数据的。 数据结构分为: 逻辑结构(思想上的结构,表) :线
阅读全文
摘要:theme: Chinese-red # 泛型 ## 1. 为什么使用泛型 > 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。 >通过泛型确定对象的类型,如果有类型转换错误,在编译阶段语法检查就会检出,
阅读全文