Java中的集合(四)PriorityQueue常用方法 PriorityQueue的基本概念等都在上一篇已说明,感兴趣的可以点击 Java中的集合(三)继承Collection的Queue接口 查看 这里主要以PriorityQueue的常用方法的学习 一.PriorityQueue的实现 从上图中给层序遍历编号,从中可以发现父子节点总有如下的关系: 通过上述三个公式,可以轻易计算出某个节点的父节点以及子节点的下标.这也就是为什么可以直接用数组来存储堆的原因. PriorityQueue的pe…
Java中的集合(十四) Map的实现类LinkedHashMap 一.LinkedHashMap的简介 LinkedHashMap是Map接口的实现类,继承了HashMap,它通过重写父类相关的方法,来实现自己的链接列表特性.但是很多方法都直接复用了父类HashMap的方法.底层数据结构是哈希表+双向链表,具有可预知的迭代顺序.允许使用null值和null键存储. LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表.此链接列表定义了迭代顺序…
Java中的集合(六)继承Collection的Set接口 一.Set接口的简介 Set接口和List接口都是继承自Collection接口,它与Collection接口中功能基本一致,并没有对Collection接口的扩展,但是它比Collection接口更严格.Java中的Set接口类似于数学直观上的集合. Set接口的特性 1.Set接口元素无序.存储和读取元素都是无序的: 2.Set接口存储的元素不能重复. 二.Set接口的类图结构 通过上面的类图可用看出:Set接口下一共有三个实现类:…
Java中的集合(五)继承Collection的List接口 一.List接口简介 List是有序的Collection的,此接口能够精确的控制每个元素插入的位置.用户能够根据索引(元素在List接口的中位置)访问List中的元素,类似于Java中的数组. List接口有如下特点: 有序的集合.存储顺序和获取元素的顺序都是一致的: 可重复.允许存储重复的元素: 提供索引.提供一些索引的方法,供用户操作. 二.List类图结构 通过上面类图可用看出,List接口下有4个实现类,分别为:Linked…
Java中的集合(三)继承Collection的Queue接口 一.Queue介绍 Queue接口继承自Collection接口,是Java中定义的一种队列数据结构,元素是有序的(按插入顺序排序),先进先出(FIFO)原则.不支持随机访问数据,新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素.通常,队列不允许随机访问队列中的元素. 队列:是计算机中的一种数据结构,保存在其中的数据具有“先进先出(FIFO,First In First Out)”的特性,新元素插入…
Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterable封装了Iterator迭代器,因此Collection可以使用Iterator迭代器. Collection用于表示一组单值对象的集合,这些对象也称为元素. Collection接口定义了一系列抽象方法,规范了对单值类型的集合的操作标准. 一.Collection子接口或子类 Collectio…
Java中的集合类型体系(一) 提问:为什么需要集合? 通常情况下,程序需要根据运行时才知道创建了多少对象.若非程序运行时,而在开发阶段,我们并不知道创建了多少对象,甚至不知道对象的准确类型,为了满足常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,但是用什么容器要存放这些对象呢?首先可能会想到用数组存放,但是数组只能存放同一类型的数据,且数组长度是固定的.所以用什么来存放更合适呢?就这样,集合便应运而生了. 一.集合的概念 Java中的集合类统一封装在java.util包中,是…
目录 1. 前言 2. List 2.1 fail-safe fail-fast知多少 2.1.1 Fail-fast Iterator 2.1.2 Fail-fast 的原理 2.1.3 Fail-safe Iterator 2.2 Iterator to list的三种方法 2.2.1 使用while 2.2.2 使用ForEachRemaining 2.2.3 使用stream 2.3 asList和ArrayList不得不说的故事 2.3.1 创建ArrayList 2.3.2 Unsu…
Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读取完之后,其他线程才可以使用.防止出现数据不一致或者数据被污染的情况. 线程不安全:就是不提供数据访问时的数据保护,多个线程能够同时操作某个数据,从而出现数据不一致或者数据污染的情况. 对于线程不安全的问题,一般会使用synchronized关键字加锁同步控制. 线程安全 工作原理: jvm中有一个…
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从本篇开始,对集合框架里的另外一部分Map作一下记录. 一,集合框架的Map接口 Map与Collection不同之处在于它是以键值对来存储数据: Map比较常用的实现类有四个:HashTable,HashMap,LinkedHashMap,TreeMap: Map的方法也可以分为四类,增删改查,大致如下: 新…