集美大学 计算机 郑如滨

教学博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

第1次实验

目标:

  • 学会使用Comparable接口与Comparator接口。
  • 掌握Comparable、Comparator与Arrays.sort之间的关系

1.让Person可比较

使用"基础代码-persons"目录中的源代码进行实验。

  • 让Person类(name, age)实现Comparable接口
  • 按age比较,然后使用Arrays.sort升、降序排序
  • 按name比较,然后排序。需考虑name为null的情况

注意

  1. name为null时,需考虑几种情况(当前对象name为null,传入对象name为null).
  2. 可直接复用String的比较方法。
  3. public int compareTo(Person o) {中编写if (this == null) return -1是否合理?this可能为null吗?
  4. 思考:如果perosons数组中某个元素为null,排序的时候会碰到什么问题?

2.为Person创建比较器

  • NameComparator(重点讲解)
  • AgeComparator(自行完成)

思考

  1. 如何快速实现与自定义Comparator相逆的方式进行排序?
    • Comparator的默认方法reversed
  2. 如何处理perosons数组中某个元素为null的情况?
    • 使用Comparator.nullsFirst或Comparator.nullsLast
  3. 如何匿名类来实现Comparator?如何使用Lambda表达式进一步改进?

3. PTA题集5-1(Comparable)

难点:如果传入对象为null,或者传入对象的某个属性为null,怎么处理?

进阶:Comparable只能实现一种比较方式。如果需要有多种不同的比较方式,则应使用Comparator接口。

4. PTA题集5-2(Comparator)

进阶:使用匿名内部类实现NameComparator与AgeComparator的的功能。
进阶:使用Lambda表达式语法实现NameComparator与AgeComparator的的功能。
难点同上。
注:PTA平台的jdk环境Open JDK6(新版已支持Open JDK8),不支持Java8的一些语法,如Lambda表达式


第2次实验

目标:

  • 掌握静态嵌套类的定义与使用
  • 掌握如何自定义接口

1. PTA题集5-3(静态嵌套类)

静态嵌套类不同于内部类,其可以独立于外部类。但是一般来说静态嵌套类和外部类有较紧密的关系,定义为嵌套类,更利于理解。

2. PTA题集5-4(自定义接口ArrayIntegerStack)

如何使用数组或者列表实现一个栈。通过接口将栈的操作抽象出来,然后可以有不同的实现。

3. 结对编程指导

  • 在码云上加入新成员
  • Eclipse中可能碰到的问题(如,冲突)

其他参考资料:

Java第04次实验(接口)文件.zip

下次实验

Java第05次实验提纲(Java图形界面编程)

posted on 2017-03-21 21:57  zhrb  阅读(1351)  评论(1编辑  收藏  举报