
java
以码为梯
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《Java8实战》读书笔记(一)
流是什么? 流是Java API的新成员,它允许你以声明的方式处理数据集合(通过类似数据库查询语句来表达,而不是临时编写一个实现)。 使用流的好处 代码是以声明的方式写的:说明想要完成什么,而不是说明如何实现一个操作 可以把几个基础的操作链接起来,来表达复杂的数据处理流水线,同时保持代码清晰可读。 filter、sorted、map和collect等操作是与具体线程无关的高层次构件,所以...原创 2018-08-07 20:18:01 · 552 阅读 · 0 评论 -
ArrayDeque原码分析
主要特点 ArrayDeque是通过可变数组的方式实现了Deque接口。 ArrayDeque没有容量限制,为了满足需求会自动容量会自动增长。 ArrayDeque不是线程安全的。 不允许存放null。 当作stack使用时,效率比java.util.Stack快;当作queue使用时,效率比java.util.LinkedList快。 大部分的操作都是常数时间运行 JDK实现的关键点...原创 2019-04-13 17:00:00 · 430 阅读 · 0 评论 -
LinkedList源码解析
LinkedList是一个双端有序列表,它支持在任何位置进行高效的插入和删除操作,在JAVA集合概览这篇文章,我们说的它实现了Deque接口,在这篇文章中主要谈谈对LinkedList源码的解读。 为什么LinkedList支持高效的插入和删除操作? 因为LinkedList中的元素,除了保存了值以外还保存了上一个元素以及下一个元素的引用,这样在添加或者删除的时候,只要...原创 2019-03-31 08:40:49 · 711 阅读 · 0 评论 -
常见排序算法总结
排序算法综述排序时需要的方法选择排序插入排序希尔排序归并排序快速排序堆排序 综述 本文主要是整理几种常见的排序算法(选择排序,插入排序,希尔排序,归并排序、快速排序,堆排序)源码Github地址 排序时需要的方法 package org.jpractice.algorithm.sort; /** * @author: 作者: xuefei * @date: 创建时间:2019-02-23 1...原创 2019-03-16 15:38:22 · 203 阅读 · 0 评论 -
根据源码谈谈对ArrayList的理解
因为最近正在绘制JAVA体系的脑图,在整理集合部分的时候只知道是怎么用的,但是不知道是怎么实现的,所以打算花点时间把集合部分的源码看一下,这篇博客是看完ArrayList的源码之后的一些感想。 首先,ArrayList是通过数组来实现的。因为ArrayList的元素是可以动态增加的,而且元素数量是不一定的,因此ArrayList通过在需要时进行数组的拷贝,将旧数组中元素拷贝到容量...原创 2018-10-08 22:27:45 · 248 阅读 · 0 评论 -
装饰者模式(二)
目录 想要达到的目的(要解决的问题) 适用的场景 组成部分和关键点 例子 在装饰者模式(一)中,我们提供了一个样例作为背景。在介绍完背景之后,这篇文章从装饰者模式的下面五个方面来介绍它。 想要达到的目的(要解决的问题) 适用的场景 组成部分和关键点 优势和劣势分别是什么? 与其他模式的对比 例子 想要达到的目的(要解决的问题) 仔细想想背景中的案例,其实增加配菜可以抽象为增...原创 2018-10-11 09:08:04 · 165 阅读 · 0 评论 -
JAVA集合概览
Collection Collection接口是Java中集合继承关系中的根接口,一个集合表示一组元素。 List List接口表示有序集合,使用这个接口可以将元素插入到集合指定的位置,也可以通过索引来查找元素。 在List接口的实现类中,Vector和ArrayList比较相似,它们内部的实现都是通过可变数组来实现的,两者的区别为Vector是线程安...原创 2018-10-11 07:05:17 · 787 阅读 · 0 评论 -
装饰者模式(一)
背景 假设我们现在要为沙县小吃创建一个应用程序,我们需要对沙县小吃进行建模。假设一开始他们提供了鸡腿饭、鸭腿饭、大肉面三种饭。刚刚开始的时候我们使用了继承来实现,而且将公共的操作放在了抽象的Snack类中。 每种饭的价格不一样,所以在每个子类中都重写了getCost()方法。现在顾客除了点鸡腿饭、鸭腿饭、大肉面之外,还想加上青菜、蒸蛋、土豆以及再加一个鸡腿等等需求。按照现在的...原创 2018-09-17 12:57:01 · 228 阅读 · 0 评论 -
排序算法之插入排序
什么是插入排序? 想必大家都玩过扑克牌,在玩牌的时候对牌的排序方法可以是从左往右逐渐变大,从第二张牌开始跟第一张比较,如果第二张比第一张小,则把第二张插到第一张前面。第三张跟第一第二张比较,然后在放到对应的位置上,后面的以此类推。 因为我们对牌的大小很熟悉,在打扑克时自然而然的就把扑克放在了正确的位置上。我们可以以前三张为例子思考下这个真正的过程。 第一步将第二张跟第...原创 2018-08-17 09:22:41 · 344 阅读 · 0 评论 -
《Java8实战》读书笔记(二)
目录 筛选、切片和匹配 filter distinct limit(n) skip(n) map flatmap 查找、匹配和规约 anyMatch allMatch noneMatch findAny findFirst reduce 使用数值范围等数值流 映射到数值流 转换回对象流 这篇文章中,主要记录的是如何使用流。主要包括下面几个方面: 从多个源创建流...原创 2018-08-08 12:59:45 · 255 阅读 · 0 评论 -
PriorityQueue源码解析
PriorityQueue是一种可以高效删除最小元素的集合。其特点如下: PriorityQueue是一个基于优先级堆的无界优先级队列(容量不限制) PriorityQueue中的元素按照元素的自然排序或者在构造对象时提供的比较器进行比较排序 PriorityQueue不能保存null值 PriorityQueue中的排序是按照元素自身的自然排序,则不能保存没有实现Compareable接...原创 2019-04-21 20:37:20 · 305 阅读 · 0 评论