【例14.9】使用lambda表达式引用带泛型的方法(1、set集合不允许重复;2、带泛型的方法;3、lambda表达式,是为了照顾跨语言开发者的习惯而添加到Java的,提高开发效率,有类似写法;)

【例14.9】使用lambda表达式引用带泛型的方法(set集合)
创建函数式接口和测试类,在接口定义时添加泛型T,并且在抽象方法参数中使用此泛型。在测试类中创建带有泛型的静态方法,同样在方法参数中使用此泛型。抽象方法和类静态方法参数类型保持一致。类静态方法会利用哈希集合不保存重复数据的原理,实现过滤数组中的重复数据。

/*【例14.9】使用lambda表达式引用带泛型的方法(set集合)
 * 创建函数式接口和测试类,在接口定义时添加泛型T,并且在抽象方法参数中使用此
 * 泛型。在测试类中创建带有泛型的静态方法,同样在方法参数中使用此泛型。抽象
 * 方法和类静态方法参数类型保持一致。类静态方法会利用哈希集合不保存重复数据
 * 的原理,实现过滤数组中的重复数据。
 * */

package lambdabdshlcl;
import java.util.HashSet;
interface ParadigmInterface<T>{
	int method(T[] t);
}

public class ParadigmDemo{
	static public <T> int repeatCoount(T[] t) {		
		//	静态方法,使用泛型参数,返回泛型。在方法名之前定义泛型。此方法用于查找数组中的重复元素个数。
		int arrayLength = t.length;					//	数组长度
		HashSet<T> set = new HashSet<>();			//	哈希集合,不允许重复的元素
		for(T tmp : t) {							//	foreach语句遍历数组,为集合添加元素
			set.add(tmp);
		}
		return arrayLength - set.size();			//	返回数组中重复元素的个数 
	}
	
	public static void main(String[] args){
		Integer a[] = {1,1,2,3,1,5,6,1,8,8};				//	创建数组对象
		String s[] = {"王","李","赵","陈","李","孙","张"};
		
		ParadigmInterface<Integer> p1 = ParadigmDemo :: <Integer>repeatCoount;	//	引用带泛型的方法
		System.out.println("整数数组重复元素个数:"+p1.method(a));
		System.out.println("整数数组重复元素个数:"+repeatCoount(a));					//	效果同引用带泛型的方法,作用是为了提高开发效率,照顾跨语言者的开发习惯
		
		ParadigmInterface<String> p2 = ParadigmDemo :: <String>repeatCoount;
		System.out.println("字符串数组重复元素个数:"+p2.method(s));
		System.out.println("字符串数组重复元素个数:"+repeatCoount(s));	
		
	}
}


在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值