- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 《数据结构与算法》之函数对象
一种将函数作为参数传递的独创方法是注意到对象既包含数据也包含方法,于是可以定义一个没有数据而只有一个方法的类,并传递该类的一个实例。事实上,一个函数通过将其放在一个对象内部而被传递。这样的对象通常叫做函数对象。 下面例子显示函数对象想法的最简单的实现。findMax的第二个参数是Comparator类型的对象。接口Comparator在java.util中指定并包含一个compare方法。实现接...
2018-10-24 20:26:08 134
原创 《数据结构与算法》之泛型——带有限制的通配符
数组的协变性导致代码得以编译,但此后会产生一个运行时异常(ArrayStoreException)。因为使用泛型的全部原因就在于产生编译器错误而不是类型不匹配的运行时异常,所以泛型集合不是协变的。 泛型(以及泛型集合)不是协变的(但有意义),而数组是协变的。若无附加的语法,则用户就会避免使用集合(colleection),因为失去协变性使得代码缺少灵活性,而通配符可以弥补这个不足。 通配符用来...
2018-10-21 21:10:17 150
原创 《数据结构与算法》之泛型——自动装箱/拆箱
如果一个int型变量被传递到需要一个Integer对象的地方,那么编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱。而如果一个Integer对象被放到需要int类型的地方,则编译器将在幕后插入一个对intValue方法的调用,这就叫做自动拆箱。对于其它7对基本类型/包装类型,也是如此。 例: public class BoxingDemo { public stat...
2018-10-21 20:39:29 207
原创 《数据结构与算法》之泛型——简单的泛型类和接口
当指定一个泛型类时,类的声明则包含一个或多个类型参数,这些参数被放在类名后面的一对尖括号内。例: public class Cell<AnyType> { private AnyType value; public AnyType read(){ return value; } public void write(AnyType x){ value=x;...
2018-10-21 20:08:31 227
原创 《数据结构与算法》之泛型——数组类型的兼容性
如Employee和Student都继承自Person,考虑下面两条赋值语句: Person arr=new Employee[5]; //Employee和Person是兼容的 arr[0]=new Student(……); //Student和Person也是兼容的 两句都编译,而arr[0]实际上是引用一个Employee,可是Student和Employee是不兼容的,这...
2018-10-21 19:29:04 421
原创 《数据结构与算法》之泛型——使用接口类型表示泛型
如:考虑再由一些项组成的数组中找出最大项的问题。基本的代码是类型无关的,但是它需要一种能力来比较任意两个对象。因此,不能直接找出Object的数组中的最大元素——我们需要更多的信息。最简单的方法就是找出Comparable的数组中的最大元。要确定顺序,可以使用compareTo方法,它对所有的Comparable都必然是现成可用的。 1、只有实现Comparable接口的那些对象才能够作为Com...
2018-10-21 18:59:51 431
原创 《数据结构与算法》之泛型——基本类型的包装
对基本类型的包装阐述了包装类(wrapper class)的基本主题。一种典型的用法是存储一个基本的类型,并添加一些这种基本类型不支持或不能正确支持的操作。 对于Java来说,虽然每一个引用类型都和Object相容,但是8种基本类型却不能。于是,Java为这8种基本类型中的每一种都提供了一个包装类。每一个包装对象都是不可改变的(就是说它的状态绝不能改变),它存储一种当该对象被构建时所设置的原值,...
2018-10-20 20:41:55 122
原创 《数据结构与算法》之泛型——使用Object表示泛型
面向对象的一个重要目标就是对代码的重用。而支持这个目标的一个重要的机制就是泛型机制(generic mechanism):如果除去对象的基本类型外,实现方法是相同的,那么就可以用泛型实现(genetic implementation)来描述这种基本的功能。 使用Object表示泛型: Java中的基本思想就是可以通过使用像Object这样的超类来实现泛型类。示例如下: public cla...
2018-10-20 19:49:59 317
原创 《数据结构与算法》之递归函数的调用
递归函数的调用 当一个函数用它自己来定义时就称为是递归的,Java允许函数进行递归调用。 public class Test { public static void main(String[] args) { int m=f(9); //调用递归函数 System.out.println(m); //输出结果 } ...
2018-10-20 19:00:46 840
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人