问题描述:
计算数组最大值通用方法
问题分析:
通过使用泛型和函数对象可以做到任意类型(只要实现了Comparator接口)的任意方法比较
代码实现:
import java.util.Comparator; /** * @project: DataStructureAndAlgorithmAnalysis * @filename: findMax.java * @version: 0.10 * @author: Powell * @date: 13:27 2015/9/29 * @comment: Test Purpose * @result: */ class CaseInsensitiveCompare implements Comparator<String>{ public int compare(String lhs, String rhs){ return lhs.compareToIgnoreCase(rhs); } } public class findMax { public static <AnyType> AnyType findMax(AnyType[] arr, Comparator<? super AnyType> cmp){ int maxIndex = 0; for(int i = 1; i< arr.length; i++) if(cmp.compare(arr[i], arr[maxIndex]) > 0) maxIndex = i; return arr[maxIndex]; } public static void main(String[] args) { String[] arr = {"ZEBRA", "alligator", "crocodile"}; System.out.println(findMax(arr, new CaseInsensitiveCompare())); } }
原文:http://my.oschina.net/jimmyhan/blog/512515