【Core Java Volume 5】集合算法---查找数组、集合最大值的通用方法

一、查找数组的最大值

1   笔试的时候通常查找数组的最大值,数组类型通常是int类型,可以这样直接写出getMax()代码:

      //数组(int 类型)
	public static int getMax(int[] nums){
		if(nums.length <=0)
			return 0;
		int max= nums[0];
		for(int i=0;i<nums.length;i++){
			if(max < nums[i])
				max=nums[i];
		}
		return max;
	}
测试:

int[]  nums={1,3,9,5,7,2,0,1};
System.out.println(getMax(nums));//9

2  当需要查找多个数组类型的最大值的时候,可以写出一个通用的方法(实现Comparable接口的):

【注】T类型需为引用类型,不能为int..基本数据类型

        //通用查找数组最大值方法
	public static <T extends Comparable >T getMax(T[] nums){
		if(nums.length <=0)
			throw new NoSuchElementException();
		T max= nums[0];
		for(int i=0;i<nums.length;i++){
			if(max.compareTo(nums[i]) < 0)
				max=nums[i];
		}
		return max;
	}
测试:
Integer[]  nums={1,3,9,5,7,2,0,1};
System.out.println(getMax2(nums));//9		
String[] arrs={"3","9","1","6"};
System.out.println(getMax2(arrs));//9


二、查找集合最大值的通用方法

       //查找集合的最大值
	public static <T extends Comparable> T max(Collection<T> collection){
		//1  判断非空
		if(collection.isEmpty())
			throw new NoSuchElementException();
		//2 获取迭代器
		Iterator<T> iter=collection.iterator();
		//3 初始化最大值,设置为第一个数
		T max=iter.next();
		//4 遍历集合,找寻最大值
		while(iter.hasNext()){
			T next =iter.next();
			if(max.compareTo(next) < 0)//即max < next
				max = next;
		}
		//返回最大值
		return max;
	}

测试:

                //2 集合
		List<Integer> list=new ArrayList<Integer>();
		list.add(2);list.add(9);list.add(4);list.add(3);list.add(1);
		//3 链表 
		List<Integer> linkList = new LinkedList<>();
		linkList.add(2);linkList.add(0);linkList.add(9);linkList.add(1);linkList.add(8);

		System.out.println(max(list));//9
		System.out.println(max(linkList));//9











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值