- 博客(20)
- 收藏
- 关注
原创 jdk源码之Map
//key能不能为null?package java.util;/** * An object that maps keys to values. A map cannot contain duplicate keys; * each key can map to at most one value. * * This interface takes the place of th
2016-05-06 23:22:34 336
原创 jdk源码分析之HashTable
package java.util;import java.io.*;/** * This class implements a hash table, which maps keys to values. Any * non-null object can be used as a key or as a value. * * To successfully store and
2016-05-06 23:21:08 293
原创 jdk源码分析之HashMap
package java.util;import java.io.*;//首先是个map,所以继承了AbstractMap,允许null值和null的key。//除了是unsynchronized和允许null之外,与Hashtable基本相同//对顺序不做保证/** * Hash table based implementation of the Map interface. Th
2016-05-06 23:16:11 325
原创 jdk源码分析之ConcurrentHashMap
/* * * * * * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at * http://creativecommons.org/publicdomain/zero/
2016-05-06 23:13:20 466
原创 jdk源码分析之Collection
package java.util;public interface Collection extends Iterable { // Query Operations /** * Returns the number of elements in this collection. If this collection * contains more
2016-05-06 23:10:10 295
原创 jdk源码分析之AbstractMap
package java.util;import java.util.Map.Entry;//提供一个Map的框架,避免重复代码//子类需要实现 //内部的非抽象方法都是在定义所有map都应该具有的性质//子类如果需要改实现,需要overridepublic abstract class AbstractMap implements Map { /** * So
2016-05-06 22:59:59 302
原创 jdk源码分析之AbstractSet
package java.util;//提供一个Set实现的骨架,使得在实现Set接口时重复写很多相同的代码//这些所谓相同的代码,就是作为一个所有Set应该具有的性质(或者说限制)和操作//extends AbstractCollection://Set作为一个Colletion,也应该具有一些Colletion应该具有的性质(或者说限制)和操作,也不用自己来写,直接继承,也是为了不
2016-05-06 22:54:16 256
原创 门面模式
一. 定义Provide aunified interface to a set of interfaces in a subsystem.Facade defines ahigher-level interface thatmakes the subsystem easier to use.(要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个更高层次的接
2016-05-05 23:43:18 252
原创 java中的名字重用
①覆写(override)子类与父类的方法名与参数都相同;根据实例的运行期类型调用;不是编译期。new的是哪一个。一个实例方法可以覆写(override)在其超类中可访问到的具有相同签名的所有实例方法,从而使能了动态分派(dynamic dispatch);换句话说,VM 将基于实例的运行期类型来选择要调用的覆写方法。覆写是面向对象编程技术的基础,并且是唯一没有被普遍劝阻的名字重用形式:
2016-05-05 23:33:15 838
原创 装饰模式
装饰模式一.定义 装饰模式(Decorator Pattern):Attach additional responsibilities to an objectdynamically keeping the same interface.Decorators provide a flexible alternativeto subclassing for extending functi
2016-05-05 19:44:35 266
原创 java中的引用
一.引用变量 java数据类型分为两种,基本数据类型和引用数据类型。 基本类型定义:int i=1;程序运行到这句会在栈中定义一个变量 i 并且直接在栈在划分出int类型所对应长度的内存给i使用,变量和变量值都在栈里。 引用类型定义:Person p = new Person();程序会在栈中创建一个变量p,在堆中划分出一个(内存地
2016-04-04 17:32:44 217
原创 java中的null
一.null的概念 首先,null是java中的关键字,大小写敏感; int类型默认值为0,boolean类型默认值为false,null是任何引用类型的默认值, null既不是变量,也不是类型,也不是java.lang.Object的实例,它是种特殊的值;你既可以将它赋给任何引用类型,也可以将它转化为任何引用类型; 如果使用了带有null值的引用类
2016-04-04 15:50:55 388
原创 算法总结(4)快速排序
在算法的评判中,速度绝对是很重要的一点,而接下来要说的这个排序算法,既然敢命名为快速排序,就必然有它的过人之处。 一.算法思路 原始数组被分为两个子数组,第一个数组小于等于某选定值(枢轴),第二个数组大于等于某选定值。重复分割。直到全部为一元数组。 快速排序的本质是递归的,它应用于数组每层分割的两个数组中,应用了分而治之的思想。 选择一个好的枢轴是很
2016-04-02 18:05:34 227
原创 算法总结(4)希尔排序(Shell排序)
已经总结了3种简单的基本排序算法,现在开始讲的是一些复杂,但是更高效,在数据量大时速度明显更快的一些排序算法,首先讲的是希尔排序。 一.算法思路 希尔排序又称为“缩小增量排序”,是一种插入排序类的算法。 考虑先排序部分原始数组,在它们至少局部有序的情况下去排序整个数组。子数组有序将比初始情况更接近整体有序的最好情况。 思路:选择第一个增量d1
2016-04-02 16:00:41 415
原创 算法总结(3)选择排序
一.算法思路 总是选择在未排序的一群数中最小的数来放到已排序的那些数的后面,即把它放到未排序数的最前面,现在它成了已排序的一部分。 注意:已排序的那部分是全局的排序,就是说,他不会被冲中间插入,是全局排序,最终排序的前面那一部分,而不是像插入排序那样,可能与最终排序结果不太一样。 步骤:先是选出最小的一个元素与第一个位置的元素交换,接着,选出第二小的元素与第二个
2016-04-02 14:57:33 256
原创 算法总结(2)直接插入排序
①直接插入排序 一.思路 每次循环都值对数组的一部分进行排序。算法从第二个位置开始,它总是假设在它之前的所有元素都是已经排好序的一群元素,在最开始,它只有一个元素,就是第一个元素。 后面的所有元素都依次往这个已经排好序的一群元素中插,使它还是一群排好序的元素。 元素插入的过程:既然前面是已经排好序的了,所以这个插入的元素只需要保存它的值,用这个值从最大的开始
2016-04-02 13:14:50 1129
原创 算法总结(1)冒泡排序
冒泡排序应该是排序算法中最简单易懂的一种排序算法了。 一.思路 将数据设想成竖立的,小的往上浮,大的往下沉。 正确的应该是小的在顶上,大的在底下。 从最底下的元素开始扫描,若发现两个相邻元素顺序错误,则交换。首先,比较a[n-1]和a[n-2],接着,a[n-2]和a[n-3],则在第一次循环完毕后,当前最小的元素被浮到了最顶上;同理,第二次又从最下面开
2016-04-02 12:21:39 366
原创 算法总结(0)目录式概括
学习数据结构与算法过了很长时间,当初熟练的使用在现在已经变得生疏,好记性不如烂笔头,今天开始对算法内容的总结; 一.排序 插入排序,冒泡排序,选择排序,希尔排序,归并排序,快速排序,堆排序,基数排序,桶排序; 二.搜索 深度优先搜索,广度有限搜索
2016-04-02 12:18:31 241
原创 算法问题(2)输出全排列
看到一个关于怎么输出全排列的解决思路,感觉很有趣,自己实现一下试试,很有意思的思路; 一,题意简述 输出一个集合中n个元素的全排列; 二,思路 一个集合的全排列可以想象成是把其中一个数挑出来放在最前面,然后对剩下的元素求出全排列,很明显地感觉到一股递归的气息,也确实可以用递归来解决。 三,解决代码 public class Main {public sta
2016-03-31 18:54:19 452
原创 算法(1)整数划分问题之递归解决
今日,阅读《ACM/ICPC 算法训练》时,发现一道名为“整数划分”的题,书上解释极为模糊,自己研究了一下此题,将其解决,记录下解题思路,以备以后有用时快速理解; 一,题意简述 将整数表示成一系列正整数之和:n=n1+n2+.....+nk; 注意:4+2+2和2+4+2是同一种划分; 求正整数n的不同划分个数; 二,思路 应用递归方法; 首先,将最大加数
2016-03-31 18:00:49 2994
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人