定义一个Rectangle类,该类提供getLength和getWidth方法。
import java.util.Comparator;
/**
* 定义一个Rectangle类,该类提供getLength和getWidth方法。利用图1-18中的findMax例程编写
* 一种main方法,该方法创建一个Rectangle数组并首先找出依面积最大的Rectangle对象,然后
* 找出依周长最大的Rectangle对象。
* @author wulei
*/
public class RectangleTest {
/**
* 构造一个矩形
*/
private int width,height;
private String name;
public RectangleTest(int width, int height){
this.width = width;
this.height = height;
}
public int getLength(){
return (width+height)<<2;
}
public int getArea(){
return width*height;
}
public String getName(){
return "("+width+","+height+")";
}
public static <T> T findMax(T[] arr,Comparator<? super T> cmp){
if(null == arr || cmp == null){
return null;
}
int index = 0;
for (int i = 1; i < arr.length; i++) {
if(cmp.compare(arr[i], arr[index]) > 0){
index = i;
}
}
return arr[index];
}
/**
* 长度比较器
*/
public static class LengthCompare implements Comparator<RectangleTest>{
@Override
public int compare(RectangleTest o1, RectangleTest o2) {
if(o1.getLength() > o2.getLength()){return 1;}
else if (o1.getLength() == o2.getLength()) {
return 0;
}else{
return -1;
}
}
}
/**
* 面积比较器
*/
public static class AreaCompare implements Comparator<RectangleTest>{
@Override
public int compare(RectangleTest o1, RectangleTest o2) {
if(o1.getArea() > o2.getArea()) {return 1;}
else if (o1.getArea() == o2.getArea()) {
return 0;
}
else {
return -1;
}
}
}
public static void main(String[] args) {
RectangleTest[] arr = new RectangleTest[]
{new RectangleTest(5, 5),new RectangleTest(6,4),new RectangleTest(3, 8)};
System.out.println(findMax(arr, new LengthCompare()).getName());
System.out.println(findMax(arr, new AreaCompare()).getName());
}
}
定义一个Rectangle类,该类提供getLength和getWidth方法。的更多相关文章
- 实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积
(1)定义一个形状类(Shape)方法:计算周长,计算面积子类:矩形类(Rectangle) :额外的方法:differ() 计算长宽差圆形类(Circle)三角形类(Triangle)正方形类(Sq ...
- java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积
需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法pri ...
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- Java初学者作业——定义一个计算器类, 实现计算器类中加、 减、 乘、 除的运算方法, 每个方法能够接收2个参数。
返回本章节 返回作业目录 需求说明: 定义一个计算器类, 实现计算器类中加. 减. 乘. 除的运算方法, 每个方法能够接收2个参数. 实现思路: 定义计算器类. 定义计算器类中加.减.乘.除的方法. ...
- 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception
异常体系结构 概念 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类. 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Erro ...
- 定义一个接口CanFly,描述会飞的方法public void fly();
1.使用类与接口的知识完成如下要求:(1)定义一个接口CanFly,描述会飞的方法public void fly();(2)分别定义类飞机和鸟,实现CanFly接口.(3)定义一个测试类,测试飞机和鸟 ...
- 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法
实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法 #import <Found ...
- C++:如何正确的定义一个接口类
C++中如何定义接口类?首先给接口类下了定义:接口类应该是只提供方法声明,而自身不提供方法定义的抽象类.接口类自身不能实例化,接口类的方法定义/实现只能由接口类的子类来完成. 而对于C++,其接口类一 ...
- 用Java开发一个工具类,提供似于js中eval函数功能的eval方法
今天在看到<Java疯狂讲义>中一个章节习题: 开发一个工具类,该工具类提供一个eval()方法,实现JavaScript中eval()函数的功能--可以动态运行一行或多行程序代码.例如: ...
随机推荐
- [No0000178]改善C#程序的建议1:非用ICloneable不可的理由
好吧,我承认,这是一个反标题,实际的情况是:我找不到一个非用ICloneable不可的理由.事实上,接口ICloneable还会带来误解,因为它只有一个Clone方法. 我们都知道,对象的拷贝分为:浅 ...
- Windbg:通过vmware调试进行内核调试
虚拟机环境搭建 参考:http://www.douban.com/note/416264043/ windbg+vmware+win7 内核 http://blog.csdn.net/G_Spider ...
- Struts2验证框架_xml验证失败
测试Struts2验证框架-->XML验证 启动tomcat后网页登录失败 Employee-validation.xml文件头如下: <!DOCTYPE validators PUB ...
- easyui中多级表头,主表头不能添加field字段,否则不居中
<th field="" width="120" align="center" align="center" co ...
- 新兴的API(fileReader、geolocation、web计时、web worker)
requestAnimationFrame() 每次浏览器重绘之前会调用这个方法!!! 它接收一个参数,就是回调函数: 它可以保证在最佳的间隔时间调用传入的回调函数,以达到让屏幕产生最流畅的动画效果. ...
- php 的Boolean类型
1. bool值不用区分大小写 $flag = Ture; $flag = TRUE $flag = true; 2. 其他类型在运算中转换为bool值 var_dump((bool) '0'); / ...
- 根据数据库结构生成RzCheckTree
现在大多数的方法是采用递归,但这种操作会频繁的去select数据库,降低了执行效率,稍微改动一些,效果会好不少,这里介绍一种方法,即一次性select出所有数据,然后按照ParentID排序,逐条添加 ...
- 有关java反射机制 小结
111111111111 Class<?> cls = Class.forName("包名.类名"); Object o = cls.newInstance(); 22 ...
- [geos]Geometry基本的几何对象
读取shp中的点,读取shp中的线, (1)读取shp中的多边形,修改属性字段的值. 类库版本:geos3.6.2,shapelib1.3 定义类变量: GeometryFactory::unique ...
- PHP的类,abstract类,interface及关键字extends和implements
原文:https://blog.csdn.net/qq_19557947/article/details/77880757?locationNum=4&fps=1 PHP类 PHP类是单继承, ...