一、学习数据结构与算法的目的
预估程序在大量的数据集上运行时需要的时间成本和空间成本。
二、递归简介
递归的四条基本法则:
一个简单的递归案例:
三、实现泛型特性构建 pre-java5
1.引入泛型的好处
面向对象的一个重要目标是对代码重用的支持,采用泛型可以提高代码的重用性。然而,泛型编程的实现是通过使用继承的一些基本概念来完成的,java中的基本思想是通过使用像Object这样的超类来实现泛型类。
以上的代码存在两个问题:
一是不能使用基本类型,不能直接把基本类型数据写入内存MemoryCell;
二是在main方法中,把“37”写到MemoryCell对象中然后又从对象中读出,为了访问这种对象的一个特定(read)方法,就必须强制转换成正确的类型。
2.基本类型的包装
为了解决上面的第一个问题,如果需要int基本数据类型,我们可以引入Integer包装类。包装类是存储一个基本的数据类型,并添加一些这种基本类型不支持或不能正确支持的操作。
3.使用接口类型或者函数对象表示泛型
采用Object作为泛型,考虑在由一些项组成的数据中找出最大项的问题。基本的代码是类型无关的,但是它的确需要一种能力来比较任意连个对象,并确定哪个是最大的,哪个是最小的。因此,我们不能直接找出Object的数组中的最大元素。最简单的想法就是找出Comparable的数组中的最大元。要确定顺序,可以使用compareTo方法,我们知道,它对所有的Comparable都必然是现成可用的。
以上方案并不是总能行得通,第一,只有实现Comparable接口的那些对象才能够作为Comparable数组的元素被传递;