自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 JDK源码解析集合篇--LinkedList全解析

LinkedList是基于链表实现的,链表和数组是两种不同的线性物理存储结构,具体不再介绍链表的用法,这是基本的数据结构知识。LinkedList是通过双向链表的实现,即:链表中任意一个存储单元都可以通过向前或者向后寻址的方式获取到其前一个存储单元和其后一个存储单元。对于此,可看LinkedList的源码节点的定义: private static class Node<E> {

2017-08-31 17:13:36 413

原创 JDK源码解析集合篇--ArrayList全解析

对于一个集合的使用,我们首先关注的是: 1、 增删改查的特点(时间复杂度是怎样的) 适用于随机访问 2、是否允许空 允许为空 3、是否允许重复数据 允许 4、是否有序,有序的意思是读取数据的顺序和存放数据的顺序是否一致 有序 5、是否线程安全 非线程安全ArrayList实现原理ArrayList就是一个以数组形式实现的集合,但是它实现了长度可变。我们可以看其源码属性:

2017-08-31 11:32:29 315

原创 JDK源码解析集合篇--综述

Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。在JDK1.5后,util包下加入了concurrent包,更加完善了集合框架对于并发多线程情况下的处理

2017-08-30 21:59:17 1214 1

原创 设计模式--工厂模式(简单工厂、工厂方法、抽象工厂模式)

工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位“大哥”——抽象工厂模式。这三种工厂模式各具特色,难度也逐个加大,在软件开发中它们都得到了广泛的应用,成为面向对象软件

2017-08-30 10:44:01 476

原创 设计模式--装饰者模式(在IO体系中的应用)

上一篇介绍了适配器模式,它是将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。装饰者模式:动态的将责任附加到对象上(因为利用组合而不是继承来实现,而组合是可以在运行时进行随机组合的)用来扩展功能。若要扩展功能,装饰者提供了比继承更富有弹性的替代方案(同样地,通过组合可以很好的避免类暴涨,也规避了继承中的子类必须无条件继承父类所有属性的弊端)。我们的目标是允许类统一扩

2017-08-29 21:21:51 2369 1

原创 设计模式--适配器模式(JDK中的应用)

本来想开始进行java集合框架的学习,但是看到集合框架中用到了适配器模式,所以先学习一下此设计模式,能让我们对java集合框架的设计思想理解更深入。JDK源码中应用了很多设计模式,在学习源码的遇到的时候会一一进行学习。闲言少叙,开始适配器模式。适配器模式定义适配器模式定义是:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。其别名为

2017-08-29 17:57:26 2248

原创 JDK源码解析基础篇-String、StringBuilder、StringBuffer

首先向搞懂常量池的知识点:触摸Java常量池 常量池技术 java.lang包的最后一篇基础篇。搞完这篇就开始集合框架和并发包等内容。Sting、StirngBuilder、StringBuffer的内容很早之前写过 String、StringBuffer和StringBuilder的区别和应用场景 ,但写的太简单了。这次再重新梳理一下这部分内容,留作以后复习。 在 java 语言中, 用来处理

2017-08-29 11:55:31 351

原创 二分搜索及其变形应用

二分搜索(折半查找)是应用很广泛的一种算法,当出现有序序列时,我们可以立马想到能否可以用二分法,其写法也较为固定,但是如果不注意其变换条件也是很容易写错。下边给出了二分查找的非递归和递归写法,只要注意其边界判断和变换,代码很简单:二分法的递归和非递归写法package com.blog.binarysearch;/** * @Description: 二分法(二分搜索 折半查找)

2017-08-27 20:14:09 317

原创 10大排序算法大总结--Java实现

今天总结了一下排序算法,在这里给出总结。主要以代码形式给出,没有涉及过多的解释。但是都比较简单,看代码注释也可以看懂。首先,来个综述:这是百度上的一个总结,为什么这里说有10种排序算法呢,这是因为加上了计数排序和桶排序,这两种排序方法再加上基数排序是3种线性排序方法。是不基于比较实现的,其他的都是基于比较实现的,其时间复杂度最低为O(nlongn),此性质可以进行证明。直接插入排序

2017-08-26 22:51:13 540

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除