定义一个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());
}
}
最新文章
- SQLServer------将表和内容导入到另一个数据库
- HTML5复习整理
- webdriver零碎知识点
- 钉钉客户端JS-API权限签名算法.NET版
- 韩服MU
- Sping mvc 环境下使用kaptcha 生成验证码
- 实验三实验报告 20135324&;&;20135330
- eclipse中logcat偶尔不显示log的问题解决办法
- 小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD
- 一网打尽OkHttp中的缓存问题
- 用C语言模仿Python函数
- nodejs 语法学习(持续更新)
- 理解spread运算符与rest参数
- JDK1.8中的线程池
- 整理SpringMVC
- 对于for循环中使用let或var时,i的作用域范围的记录
- 洛谷P2516 [HAOI2010]最长公共子序列(LCS,最短路)
- java线程执行的优先级
- ajax请求报语法错误
- sql sever跨数据库复制数据的方法